目录
一、模板渲染页面
二、模板语法总结
三、ORM模型创建和操作
四、使用ORM+模板实现登录功
一、模板渲染页面
使用Django返回模板页面
1、在templates目录下面创建页面index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1 style="color: red;text-align: center">Hello Django!!</h1>
</body>
</html>
2、在子应用app下的views.py中谢逻辑返回页面
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
# 这里不写请求方法,默认是get
# return HttpResponse('')
return render(request, 'index.html')
3、书写Django中的路由
from django.urls import path
from . import views
urlpatterns = [
path('', views.index)
]
模板变量渲染
使用模板变量的形式展示部分数据
# 形如:
{#<h1 style="color: red;text-align: center">{{ stu_list }}</h1>#}
二、模板语法总结
for循环
使用模板中使用标签语言{% for %} 和 {% endfir %}
对视图函数传递的数据集进行遍历访问,如:字符串,列表,元 祖,字典,集合这样的数据
模板标签使用大括号百分号的组合{% lag %},具有一些特殊的功 能性
{% for %}与python中的for循环类似,要记得有闭合
模板标签{{ endfor }}
if语法
{% if %}
{% elif %}
{% else %}
{% endif %}
{# for i in items #}
{# endfor #}
1.在views.py中写一个函数视图
from django.shortcuts import render
def index(request):
# 这里不写请求方法,默认是get
# return HttpResponse('')
context = {'stu_list': [{'id': '1', 'name': '刘备'}, {'id': '2', 'name': '关羽'}]}
return render(request, 'index.html', context=context)
2.在页面当中接收context传递的内容
{% for i in item %}
# 这里写循环内容
{% endfor %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<table class="t1" >
<tr>
<td>索引</td>
<td>编号</td>
<td>名称</td>
<td>年龄</td>
<td>操作</td>
</tr>
{% for stu in stu_list %}
<tr>
<td>{{forloop.counter0}}</td>
<td>{{stu.id}}</td>
<td>{{stu.name}}</td>
{% if stu.age > 30%}
<td class="td01">{{stu.age}}</td>
{% else %}
<td class="td02">{{stu.age}}</td>
{% endif %}
<td>
<button>删除</button>
</td>
</tr>
{% endfor %}
</table>
</body>
</html>
三、ORM模型创建和操作
django和数据库之间的关系映射
在models.py中写入一个类,这个类就对应数据库的一个表
里面的属性,就是表中的字段
数据库字段属性类型
字符串 CharField
整形 IntegerField
图片 ImageField
邮箱 EmailField
from django.db import models
# Create your models here.
class User(models.Model):
# # verbose_name 这个会在一会的admin中用到
username = models.CharField(max_length=32,verbose_name='用户名')
password = models.CharField(max_length=128,verbose_name='密码')
def __str__(self):
return self.username
class Meta:
verbose_name='用户'
verbose_name_plural = verbose_name
生成迁移文件
python manage.py makemigrations
执行迁移
python manage.py migrate
四、使用ORM+模板实现登录功能
1.在templates下面新建一个login.html页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.div01{
width: 50%;
margin: 50px auto;
text-align: center;
}
</style>
</head>
<body>
<div class="div01" >
<h2>登录页面</h2>
{{ msg }}
<form action="" method="post">
{% csrf_token %}
<p>username: <input type="text"></p>
<p>password:<input type="text"></p>
<p><input type="submit" value="登录"> </p>
</form>
</div>
</body>
</html>
2.使用django把login渲染到网页中
def login(request):
# 判断请求方法,如果请求方法为get,返回login页面
if request.method == 'GET':
return render(request,'login.html')
3.请求方法为post时,先打印一下请求到数据,看看数据格式
def login(request):
# 判断请求方法,如果请求方法为get,返回login页面
if request.method == 'GET':
return render(request,'login.html')
elif request.method == 'POST':
print(request.POST)
return render(request,'login.html')
4.html为input添加name属性,获取输入的内容
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.div01{
width: 50%;
margin: 50px auto;
text-align: center;
}
</style>
</head>
<body>
<div class="div01" >
<h2>登录页面</h2>
{{ msg }}
<form action="" method="post">
{% csrf_token %}
<p>username: <input type="text" name="username"></p>
<p>password:<input type="text" name="password"></p>
<p><input type="submit" value="登录"> </p>
</form>
</div>
</body>
</html>
5.在登录视图,完成登录逻辑
def login(request):
# 判断请求方法,如果请求方法为get,返回login页面
if request.method == 'GET':
return render(request,'login.html')
elif request.method == 'POST':
print(request.POST)
# 获取网页请求数据
username = request.POST.get('username')
password = request.POST.get('password')
# 判断用户是否是注册用户
# 通过用户名获取用户对象,用来判断用户是否是注册用户
# filter() 过滤符合条件的数据
# first() 获取第一条数据
user_obj = User.objects.filter(username=username).first()
print(user_obj)
# 判断,如果用户存在,并且密码正确,跳转页面
if user_obj and user_obj.password == password:
context = {'stu_list': [{'id': '1', 'name': '刘备', 'age': '35'}, {'id': '2', 'name': '关羽', 'age': '29'}]}
return render(request,'index.html',context=context)
# 否则,提示用户名和密码不正确
else:
return render(request,'login.html',{'msg':'用户名和密码不正确'})