1.模板使用
模板配置
在settings.py文件配置模板所在目录
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
# 模版存放位置, 在根目录下,templates当中 e:\mycode\h2101A\day02
'DIRS': [os.path.join(BASE_DIR, 'templates')]
,
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
2.模板语句循环。分支
for 标签
语法:
{%for i in item%}
{% endfor %}
在templates中创建一个index.html页面
在views.py中写一个视图函数
from django.shortcuts import render
# Create your views here.
def index(request):
context = {'stu_list':[{'name':'张飞','age':30},{'name':'刘备','age':40}]}
return render(request,'index.html',context=context)
在app01下的urls配路由
from django.urls import path,include
from . import views
urlpatterns = [
path('index/',views.index)
]
使用for循环打印出views中的stu_list
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<table>
<tr>
<td>索引</td>
<td>姓名</td>
<td>年龄</td>
<td>编辑</td>
</tr>
{% for stu in stu_list %}
<tr>
<td>{{ forloop.counter0 }}</td>
<td>{{ stu.name }}</td>
<td>{{ stu.age }}</td>
<td>
<button>删除</button>
</td>
</tr>
{% endfor %}
</table>
</body>
</html>
// for循环中的常用用法
{{forloop.counter}} # 取循环当中索引,从1开始
{{forloop.counter0}} # 取循环当中索引,从0开始
{{forloop.first}} # 判断是否为第一个
{{forloop.last}} # 判断是否为最后一个
{{forloop.revcounter}} # 取循环当中索引,从后往前取
{{forloop.revcounter0}} # 取循环当中索引,从后往前取到0
{{forloop.parentloop}} # 取循环当中父级
if语法
{% if %}
{% elif %}
{% else %}
{% endif %}
例如: 使用if判断,将身高超过175的颜色变成红色 ,否则为蓝色
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<table>
<tr>
<td>索引</td>
<td>姓名</td>
<td>年龄</td>
<td>编辑</td>
</tr>
{% for stu in stu_list %}
<tr>
<td>{{ forloop.counter0 }}</td>
<td>{{ stu.name }}</td>
{% if stu.height >= 175 %}
<td style="color:red">{{ stu.height }}</td>
{% else %}
<td style='color:deepskyblue'>{{ stu.height }}</td>
{% endif %}
<td>
<button>删除</button>
</td>
</tr>
{% endfor %}
</table>
</body>
</html>
ORM映射
以登录页面为例
模型类编写
from django.db import models
# Create your models here.
class User(models.Model):
# 用户名
username = models.CharField(max_length=32)
# 密码
password = models.CharField(max_length=120)
def __str__(self):
return self.username
迁移数据库
在Terminal中写入指令
python manage.py makemigrations
python manage.py migrate
使用admin对数据进行增删改查
在app01下的admin.py
from .models import User
在admin中注册用户模型
admin.site.register(User)
创建超级用户
在Terminal中
python manage.py createsuperuser
#创建用户名 密码后运行项目
http://127.0.0.1:8000/admin/login/?next=/admin/
登录成功后添加一个新用户
使用django完成登录功能
新建hml文件 login.html,写入登录页面内容
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.c1 {
margin:50px auto;
text-align:center
}
</style>
</head>
<body>
<div class="c1">
<h1>用户登录</h1>
<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>
配路由
from django.urls import path,include
from . import views
urlpatterns = [
path('index/',views.index),
path('login/',views.login)
]
将内容渲染到网页中
def login(request):
# 如果请求方式为get 就返回login页面
if request.method == 'GET':
return render(request, 'login.html')
# 如果请求方式为get时 打印请求到的数据
elif request.method =='POST':
print(request.POST)
return render(request,'login.html')
给login.html 中input中添加name属性,获取输入的内容
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.c1 {
margin:50px auto;
text-align:center
}
</style>
</head>
<body>
<div class="c1">
<h1>用户登录</h1>
<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>
拿到获取内容
<QueryDict: {'csrfmiddlewaretoken': ['ecBIVkLTMBX8KGFdcfOz2rXE9EYIGv0QSKVehdj8qXUDSfHscZwenhnfkSh3aUwd'], 'username': ['zhangsan'], 'password': ['123321']}>
进行逻辑判断
from django.shortcuts import render
from .models import User
# Create your views here.
def index(request):
context = {'stu_list':[{'name':'张飞','height':180},{'name':'刘备','height':175},{'name':'关羽','height':210}]}
return render(request,'index.html',context=context)
def login(request):
# 如果请求方式为get 就返回login页面
if request.method == 'GET':
return render(request, 'login.html')
# 如果请求方式为get时 打印请求到的数据
elif request.method =='POST':
print(request.POST)
# 获取网页请求到的数据
username = request.POST.get('username')
password = request.POST.get('password')
# 判断用户是否是注册用户,通过用户名来进行判断是否注册
user_obj = User.objects.filter(username=username).first()
# 如果用户名,密码成功 就提示登陆成功 并跳转页面
if user_obj and user_obj.password == password:
return render(request,'index.html',{'msg':'登陆成功'})
# 否则提示登录失败
else:
return render(request,'login.html',{'msg':'登录失败'})
在html页面中写入{{msg}}来查看提示
bjects.filter(username=username).first()
# 如果用户名,密码成功 就提示登陆成功 并跳转页面
if user_obj and user_obj.password == password:
return render(request,‘index.html’,{‘msg’:‘登陆成功’})
# 否则提示登录失败
else:
return render(request,'login.html',{'msg':'登录失败'})
``
学识有限,仅供参考!!