不忘初心,
牢记使命。

建站呕血历程(Django3强力驱动)

2021-06-03 大聪明 4评论 775 17喜欢

建站呕血历程(Django3强力驱动)

前言

关于建立自己的个人网站,我也是尝试了很多次。第一次是学生活动免费试用阿里云服务器,结果几天后就到期啦。只会的一段时间,又碰到一个活动机会,申请了两个月的服务器。当时借助于WordPress建立了一个博客网站,虽然有很多风格可选择,但是,仍然感觉巨丑。随后,服务器也到期了,便没做他想。到了今天,看到别人的华丽博客后,终于忍不住自己斥资也建立了一个。整个网站前后差不多一个月就上线啦吧,其中无时无刻不在忙它。主要有了这个想法之后,完不成心里就一直想着,也无心干其他事情。

前端布局

这里还是要声明一下,我前端没有设计天赋,也是找各种大神的博客做参照,根据他们的样式来做前端。本人设计思想也不出众,只好借助别人设计好的风格,加上bootstrap快速建立了前端。前端布局主要借助了未雨晴空大佬的博客,其中也想到过是不是设计到版权问题,但想到自己纯属借鉴,又不是全搬照抄。再者也不是商业用途,也加上了自己的思想,所以应该不构成版权纠纷。当然,这里也欢迎所有的朋友们来借鉴我的博客,本人会非常欢迎。在这里如果有设计到侵权的问题,也欢迎当事人联系我更改或删除。

关于前端页面,大家也可以去各大模板网站去寻找自己喜欢的样式。我也是主学后端的,前端确实不怎么样,但往往别人喜欢你的网站都是因为漂亮的前端~

后端开发

后端主要使用的Django+simpleui进行开发。这里就多说一点,前端经过我的借鉴和修改后只是一个个静态的网页,什么都是已经写死的。在我开发后端的时候,需要考虑前端的展示效果,即需要给前端发送什么类型的数据,以实现静态页面和数据库的动态交互

前后端数据交互主要有两种:

  1. 通过Form来发送POST或GET请求,在action属性中指定url。后端收到数据后,对数据库进行相应的操作后将得到的数据反馈给前端,最后在前端进行渲染。例如我的注册页面:

    html页面

    <form class="form-signin bg-white" method="post" action="/user/register" id="register-form">
        {% csrf_token %}
        // 只取了一个input
        <div class="form-label-group">
            <input type="text" id="inputUsername" name="username" value="" class="form-control " placeholder="用户名"
                   aria-describedby="usernameHelpBlock" required="" autofocus="">
            <label for="inputUsername">用户名</label>
            <small id="usernameHelpBlock" class="form-text text-muted">
                用户名只能包括中文,字母,数字,长度限制在2—15位
            </small>
            <div class="invalid-feedback" id="username-feedback">
            </div>
        </div>
    
    </form>
    
  2. 使用Ajax。Ajax主要优点就是可以实现不刷新页面和后端交互,Form必须刷新页面才会发送请求。

    <script>
        $('.dianjipwd').click(function () {
    
            var new_password = $('#new_password').val()
            var old_password = $('#old_password').val()
            var csrf = $("[name=csrfmiddlewaretoken]").val()
    
            $.ajax({
                url: "{% url 'modify' %}",
                type: "post",
                data: {
                    new_password: new_password,
                    old_password: old_password,
                    csrfmiddlewaretoken: csrf,
                },
                success: function (data) {
                    console.log(data)
                    if (data.code != 200) {
    
                    } else {
    
                    }
                }
            })
    
        })
    </script>
    

后端就是采用views视图函数和modles来处理了。

主要提一下Django admin还是很实用的。有了它就不用为文章发表专门简历一个后台了,通过admin可以很方便的操作数据库。还有就是Django的ORM,这是我喜欢用Django开发的一个非常重要的原因。它集成的ORM可以很方便的操作数据库,而且无论你用的什么数据库,你只需要会ORM一种语言方法即可,它会自动的帮我们转换,非常方便。使得我们不用耗费精力再去学习其他的数据库语言。

数据库

这里我使用的MySQL数据库,因为对MySQL的一些常规操作还算比较熟悉。况且本站也没有涉及到到大量的事务操作,因为我没有允许用户简历个人站点,只有管理员负责文章的修改和发布(服务器配置跟不上)。

项目部署

项目部署主要采用nginx+uwsgi。使用倒是很简单,但总会出一些小问题,这里也是配置了好久才行。记忆最深的就是搜集静态文件的路径问题,包括Django的和uwsgi的,但总算是成功了。

存在的问题

目前小站还存在很多待优化的问题,包括未测出的bug、页面加载速度等。在使用中遇到bug欢迎留言告知。最后感谢大家的来访,记得小红心走起来~

  1. 小吴
    2021-06-17 21:34:37

    阅读这篇文章为啥鼠标总是有个类似超链接的那个小手,感觉不太舒服。正确情况下应该只是一个光标,然后看你的文章鼠标怎么移动都是小手,

    回复
    1. 2021-06-18 18:41:54

      感谢朋友的建议,找时间我会修改一下~

      回复
  2. 小傻瓜
    2021-04-01 22:11:14

    打卡٩(ˊᗜˋ*)و

    回复

发表评论 取消回复

电子邮件地址不会被公开。

请输入正确格式的qq邮箱
请输入以http或https开头的URL,格式如:https://libo_sober.top