继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Django -- 从云端留言板入门Django开发

郁现勇
关注TA
已关注
手记 8
粉丝 0
获赞 4

实训的时候就想着学一下python web开发,一直到上周才过了一遍基础知识,对python基础学习之后,还有很多进阶的地方没有去学习,只有在实战中一边学习新的技术,一边去练习基础知识吧,就和李老师说的一样,把基础教程当做字典去查,而不是一个字的去背他。
简单介绍一下Django ,Django是python web 开发的框架,用于web开发的工作,与Java中的 spring框架类似,安装环境与部署,这里就不说了,开始我们的第一个实例的部署吧。

一 MVT 开发模式

Django 根据MTV开发模来进行开发,我们可能听说过Java开发的 MVC 模式,具体流程是类似的,语言只是一个媒介,就和英语中的 cat 和我们说的‘猫’是一个意思的,语言不同,所做的事情确实一样的。

  • M:models 模型 (主要是处理数据库的工作,组织和存储数据的方法和模式)
  • T:Templates 模板 (主要是负责网页界面,用于定义表现风格)
  • V:Views 视图(负责前后端的交互,针对请求选取数据的功能)
    开发模式示意图
    MTV开发描述
    MTV开发模式我们会在以后的学习中逐渐加深对他的认识。

实例一 云端留言板的开发

创建项目工程

首先在你的工作目录内创建一个项目工程,可以使用Django自带的创建命令:

Django-admin startproject clounds

创建完成之后,你可以在pycharm 中看见一下工程目录:
图片描述
目录中的各项解释:
图片描述
目录中_int_.py 与 wsgi.py 是不需要我们进行修改配置的,settings.py属于设置文件,可以配置模板地址等。urls.py是路由文件。

创建一个APP

APP 是工程下的一个具体应用,就好比淘宝网中的商品排行界面,或者登陆界面就是两个APP
可以使用以下命令创建

python manage.py startapp mgasapp 

目录结构:
图片描述
这里可以看到新创建的APP中与工程目录有很多相似的地方,我们目前需要注意的只有 templates、urls.py views.py ,分别控制模板,本地路由,以及交互的内容。
明白每个目录基本的功能就开始进行实例的开发了。
开发步骤:

  1. 创建工程
  2. 创建APP
  3. 设置前端模板代码
  4. 设置路由(本地路由以及全局路由)
  5. 编写交互代码
    第一步与第二,我们前面已经讲解了,我们从模板开始。
    首先在APP目录下新建目录templates,用来放前端代码 m.html:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>云端留言板(1)首页</title>
</head>
<body>
    <h1>提交留言功能</h1>
    <form action="/msggate/" method="post">
        {% csrf_token %}
        发送方<input type="text" name="userA"/><br>
        接收方<input type="text" name="userB"/><br>
        消息文<input type="text" name="msg"/><br>
        <input type="submit" value="提交留言">
    </form>
    <h1>获取留言功能</h1>
    <form action="/msggate/" method="get">
        接收方<input type="text" name="userC"/><br/>
        <input type="submit" value="留言接受">
    </form>

    <table border="1">
        <thead>
            <th>留言时间</th>
            <th>留言来源</th>
            <th>留言信息</th>
        </thead>

    <br>
    <tbody>
        {% for line in data  %}
            <tr>
                <td>{{ line.time }}</td>
                <td align="center">{{ line.userA }}</td>
                <td>{{ line.msg }}</td>
            </tr>


        {% endfor %}

    </tbody>

   </table>
</body>
</html>

图片描述
2,设置路由
路由需要设置本地路由和全局路由,本地路由是在APP目录下新建一个 urls.py的文件,用来联系交互界面,将views界面编写的函数调用到网页中。

from django.urls import path
from . import views
urlpatterns = [
    path('', views.msgproc),
 ]

全局路由设置界面

"""
from django.contrib import admin
from django.urls import include, path



urlpatterns = [
    path('admin/', admin.site.urls),
    path('msggate/', include('mgsapp.urls'))
]

3.编写交互界面
交互界面使用python,用来连接前端与数据库,是我认为最重要的一部分:

from django.shortcuts import render
from datetime import datetime
# Create your views here.
def msgproc (request):
    datalist=[]
    if(request.method=="POST"):
        userA=request.POST.get("userA",None)
        userB=request.POST.get("userB",None)
        msg=request.POST.get("msg",None)
        time=datetime.now()
        with open('msgdata.txt','a+') as f:
            f.write("{}--{}--{}--{}--\n".format(userB,userA,msg,time.strftime("%Y-%m-%d %H:%M:%S")))

    if(request.method=="GET"):
        userC=request.GET.get("userC",None)
        if(userC!=None):
            with open('msgdata.txt','r') as f:
                cnt=0
                for line in f:
                    linedata=line.split('--')
                    if(linedata[0]==userC):
                        d={"userA":linedata[1],"msg":linedata[2],"time":linedata[3]}
                        datalist.append(d)
                    if(cnt>=10):
                        break
    return render(request,"m.html",{"data":datalist})  ##render函数第三个参数是字典类型,表明向html页面中特定变量赋值

到这里基本的留言板功能机已经实现了,主要是熟悉一下,Django开发的流程,与其基本方法,现在用的开发工具变成了pycharm,本来我一般使用vscode做python的,但是他最web开发不如这个方面,所以就暂时用这个大胖子软件吧。

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP