类试图
from django.views import View
class Index(View):
def get(self,request,page):
return HttpResponse(f"当前第{page}也")
子路由
from django.urls import re_path , path
from myapp import views
urlpatterns=[path('index//',views.Index.as_view()),
# re_path(r'^index/(?Pd+)/$',views.Index.as_view())
]
2.路由分发(创建子路由)
需要现在主路由中进行路由分发
from django.contrib import admin
# 导入include方法
from django.urls import path, include
from myapp import urls
urlpatterns = [
#主路由
path('admin/', admin.site.urls),
path('',include(urls)) # 路由分发
]
在子组件中创建子路由
from django.urls import re_path , path
from myapp import views
urlpatterns = [
re_path(r"^[a-zA-Z]{3}/$",views.Review.as_view()),
path('index/',views.Index.as_view()),
]
3案例:登录注册 知识点:类视图CBV 重定向
编写两个模型类,用来生成表
from django.db import models
# Create your models here.
# 编写模型类
class BOOK(models.Model):
user = models.CharField(max_length=12,verbose_name='账号')
pwd = models.CharField(max_length=12,verbose_name='密码')
# 元类:
class Meta:
verbose_name = '用户表'
verbose_name_plural = verbose_name
db_table = 'yong'
def __str__(self):
return self.user
class SHU(models.Model):
name = models.CharField(max_length=10,verbose_name='书名')
num = models.IntegerField(verbose_name="数量")
price = models.IntegerField(verbose_name="价格")
class Meta:
verbose_name = '书单'
verbose_name_plural = verbose_name
db_table = 'shu1'
def __str__(self):
return self.name
# 生成迁移文件
# python manage.py makemigrations
# 创建迁移文件
# python manage.py migrate
# 创建超级用户
# python manage.py createsuperuser
# 注册表
在注册两个模型类
from django.contrib import admin from book.models import BOOK from book.models import SHU # Register your models here. # 注册表 admin.site.register(BOOK) admin.site.register(SHU) # 以管理员身份打开就可以添加数据了4.注册,保存账号密码到数据库
注册视图:get 获取表单页面 post提交账号密码,重定向到登录页面
定义注册的类试图
from django.shortcuts import render,redirect
from django.http import HttpResponse
from book.models import BOOK
from django.views import View
class register(View):
def get(self,request):
# 返回一个注册页面
return render(request,'register.html')
def post(self,request):
# 提取账号密码
user = request.POST.get('user')
pwd = request.POST.get("pwd")
# 判断是否存在
try:
# BOOK是模型类 get查询models里的user是否与输入的相同
BOOK.objects.get(user=user)
return HttpResponse("用户存在")
except Exception as e:
# 打印失败的原因
print(e)
# 保存账号密码 creata 创建数据,在数据库中新增(字段名=输入的变量)
BOOK.objects.create(user=user,pwd=pwd)
# 登录页面的路由login /从跟地址开始
return redirect('/login/') #重定向
配置路由
from django.urls import path
from book import views
urlpatterns =[
path('register/', views.register.as_view()),
]
注册页面
Title
注册页面
{# action :提交地址:跳转哪个视图的路由 methods:提交方式 数据提交到register这个视图进行处理 #}
5.登录,判断账号密码是否正确
登录视图:get 获取表单页面 post提交账号密码,重定向到主页面
定义登陆的类视图
from django.shortcuts import render,redirect
from django.http import HttpResponse
from book.models import BOOK
from django.views import View
class login(View):
def get(self,request): # 返回一个登录页面
return render(request,'login.html')
def post(self,request):
user = request.POST.get('user')
pwd = request.POST.get('pwd')
try:
# 先获取用户
book_data = BOOK.objects.get(user=user)
except Exception as e:
print(e)
# 返回一个响应
return HttpResponse("用户不存在")
# 判断密码是否正确
if book_data.pwd == pwd:
return redirect('/zhu/')
else:
return HttpResponse("密码错误")
配置路由
from django.urls import path
from book import views
urlpatterns =[
path('login/', views.login.as_view()),
]
登录页面
Title
登录页面
6.主页面
主页面的类视图
from django.shortcuts import render
from django.http import HttpResponse
from django.views import View
class zhu(View):
def get(self,request):
data = SHU.objects.all()
return render(request,'zhu.html',{'shu':data})
配置路由
from django.urls import path
from book import views
urlpatterns =[
path('zhu/',views.zhu.as_view())
]
主页面
Title
主页面
| 编号 | 名字 | 数量 | 价格 |
| {{ fo.id }} | {{ fo.name }} | {{ fo.num }} | {{ fo.price }} |



