模板语法及静态文件
1 多app创建
在主路由当中引入 include
include()函数是Django.urls模块中的一个函数,它的作用是在urls.py文件中引入其他应用的URL模式。
python
from django.urls import path, include
创建多个app
python manage.py startapp project_one
python manage.py startapp project_two
主路由添加两个app的路由
python
path('one/', include("project_one.urls"))
path('two/', include("project_two.urls"))
##### 对应子路由
```python
# project_one
path('index/one/data/', views.index_one),
# 访问index_one视图路径:one/index/one/data/
# project_two
path('index/two/data/', views.index_two),
# 访问index_two视图路径:two/index/two/data/
```
2 模板语法
2.1 变量
变量的写法使用一个嵌套大括号{{ name }}
python
def index_one(request):
dict_data = {}
dict_data["name"] = "张三"
dict_data["love"] = ["篮球", "羽毛球", "足球"]
return render(request, "two/index_one.html", dict_data)
html
</--index_one.html--?>
<h1>大家好,我是{{ name }}我喜欢{{ love.0 }}</h1>
<h1>大家好,我是{{ name }}我喜欢{{ love.1 }}</h1>
2.2 标签
标签允许您执行以下操作:如果条件,for循环,模板继承等。
for循环
python
def index_one(request):
dict_data = {}
dict_data["love"] = ["篮球", "羽毛球", "足球"]
return render(request, "two/index_one.html", dict_data)
html
</--index_one.html--?>
{% for data in love %}
<h1>{{ data }}</h1>
{% endfor %}
条件判断
python
def index_one(request):
dict_data = {}
dict_data["age"] = 18
return render(request, "two/index_one.html", dict_data)
html
</--index_one.html--?>
{% if age >= 18 %}
<h1>成年了</h1>
{% else %}
<h1>未成年</h1>
{% endif %}
3 表单提交
html
<form method="post">
{% csrf_token %}
<input type="text" name="user" placeholder="用户名">
<input type="password" name="pwd" placeholder="密码">
<input type="submit" value="提交">
</form>
{% csrf_token %}是 Django 提供的防止伪装提交请求的功能。POST 方法提交的表格,必须有此标签。
python
def login(request):
if request.method == "GET":
return render(request, "two/login.html")
else:
username = request.POST.get("user")
password = request.POST.get("pwd")
print(username, password)
if username == "admin" and password == "123456":
# return HttpResponse("登录成功")
# 重定向
return redirect("/")
else:
return HttpResponse("登录失败")