Django学习1
一、入门
1.cmd进入目录
C:\Users\Administrator\PycharmProjects\untitled7>cd 01-hello
2、创建文件(mysite
)
untitled7\01-hello>django-admin startproject mysite
3、先进入mysite,再创建文件app(helloapp)
untitled7\01-hello\mysite>python manage.py startaapp helloapp
4、修改views和URL
5、运行服务器
untitled7\01-hello\mysite>python manage.py runserver
6、拷贝链接再加上 URL
二、实例1:云端留言版(1)
1、开发流程:
步骤1:新建工程 cloudms
步骤2-1:新建应用 msgapp
步骤2-2:增加模板,即显示界面的HTML/CSS/JS代码,配置路径
步骤2-3:设定URL路由,本地路由和全局路由
步骤2-4:编写交互代码
步骤3:运行工程
2、实操
步骤1:新建工程 cloudms
\>django-admin startproject cloudms
步骤2-1:先进入cloudms,再新建应用 msgapp
\>cd cloudms
python manage.py startapp msgapp
步骤2-2:增加模板,配置路径
msgapp/templates/MsgSingleWeb.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 borader="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-2:增加模板,配置路径
cloudms/settings.py
TEMPLATES = [
{
'DIRS': [os.path.join(BASE_DIR,"msgapp/templates")],
步骤2-3:设定URL路由,本地路由和全局路由
msgapp/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.msgproc),
]
cloudms/urls.py
from django.contrib import admin
from django.urls import include,path
urlpatterns = [
path('msggate/', include('msgapp.urls')),
path('admin/', admin.site.urls),
]
步骤2-4:编写交互代码
msgapp/views.py
from django.shortcuts import render
from datetime import datetime
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:
cnt = cnt + 1
d = {"userA": linedata[1], "msg": linedata[2], "time": linedata[3]}
datalist.append(d)
if cnt >= 10:
break
return render(request, "MsgSingleWeb.html", {"data": datalist})
3、cmd命令
python manage.py runserver
三、模板语言
• 注释
单行注释: {# 这是单行注释 #}
多行注释:
{% comment %}
这是多行注释第一行
这是多行注释第二行
{% endcomment %}
• 变量
{{ name }}
如果变量本身是字典类型、列表类型或对象,用.获取元素
{{ adict.key }} {{ alist.0 }}
{{ aobject.attribute }}
• 标签
{% 关键字引导的程序逻辑 %}
标签中的关键字包括
for, endfor, block, endblock, if, elif, else,
endif, in, trans, as, with, extends 等
https://docs.djangoproject.com/en/2.0/ref/templates/language/
{% for line in data %}
<tr>
<td>{{ line.time }}</td>
<td align="center">{{ line.userA }}</td>
<td>{{ line.msg }}</td>
</tr>
{% endfor %}
• 过滤器
{{ name|过滤标签 }} {{ name|f1|f1 }}
过滤器对变量的值进行修饰
lower, escape, linebreaks, date, length等
{{ name|lower }}
{{ my_date|date:"Y-m-d" }}