DJango后台管理
Django后台管理使用
本地化
123# settings.py文件LANGUAGE_CODE = 'zh-hans'TIME_ZONE = 'Asia/Shanghai'
创建超级管理员
1python manage.py createsuperuser
注册模型类
1234567# 应用对象的admin.py文件中from wuxiang.models import Book, Heroclass HeroAdmin(admin.ModelAdmin): list_display = ['hname', 'hcomment', 'hgender', 'hook'] admin.site.register(Hero, HeroAdmin)
列表页
修改后台列表页显示内容
1234567# 修改应用对象的models.py文件class Book(models.Model): btitle = models.CharField(max_l ...
Django中间件
Django中间件背景
获取用户访问的地址信息
12# 通过request的META属性获取,里面有一个REMOTE_ADDRaddr = requesst.META['REMOTE_ADDR']
中间件的作用
中间件是程序在使用视图前调用的方法,借用这个我们可以介入用户请求和处理的内部
使用中间件
在对应应用的下面新建一个中间件文件【middleware.py】,名字可以自己定,但一般都叫这个
1touch middleware.py
编辑中间件【middleware.py】的内容
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950# 设置屏蔽用户的IPfrom django.http import HttpResponse# 需要继承MiddlewareMixin, 不然会报错from django.utils.deprecation import MiddlewareMixin# 切记中间件的函数名称就叫process_v ...
Django图片上传与分页
Django图片上传与分页配置
新建上传目录
12# 这个位置可自己定,一般放在根目录下新建一个media文件夹mkdir media
配置上传文件保存目录
12# 项目settings.py文件中新增配置项MEDIA_ROOT = os.path.join(BASH_DIR, 'media')
后台上传图片
设计模型类
1234# 在对应应用下的models.py文件中注册图片管理class PIC_Upload(models.Model): # upload_to:表示图片上传的路径,该路径是相对于settings.py文件media_root配置 pic = models.ImageField(upload_to='picture')
在项目的管理后台进行注册
12# 修改app对应的admin.py文件,注册图片的那张表admin.site.register(PIC_Upload)
通过ImageField设置图片字段,它会自动的检测上传的内容是不是图片格式
【问题解决】当生成迁移文件的时候,可能会提示没有任何修 ...
Django静态、中间、后台
Django静态、中间、后台静态文件配置静态文件指的是js、css、图片文件,django中配置方式如下:
在根目录下新建静态文件夹static
1mkdir static
修改项目settings.py配置文件的静态目录
12345# 设置访问静态文件的urlSTATIC_URL = '/static/'# 设置静态文件所在的物理目录STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
静态文件的查找顺序
先在【STATICFILES_DIR】目录下查找文件
如果第一步查找不到,则进入应用当中的【static】文件夹进行查找指定的文件
若上述都查找不到,则报错
模板中静态文件的动态配置12345678910111213<!DOCTYPE html>{# 使用前需要先导入,如果同时还要导入extends,则优先导入extends#}{% load static %}<html lang="en">& ...
Django登陆装饰器及解析相关
Django登陆装饰器及解析相关登陆装饰器有些页面是需要用户进行一些操作后才能进行访问的,直接访问是不被允许的,在这个情况下,如果将对应的验证操作全部定义在视图函数中,则会造成代码的冗余
解决方案:通过给需要操作的页面添加装饰器来达到验证的目的
1234567891011121314# 先定义一个装饰器用户验证def login_required(func): def check_required(request, *args, **kwargs): if request.session.has_key('login') and request.session['login']: return func(request, *args, **kwargs) else: return redirect('/signin') return check_required # 然后用装饰器装饰必须登陆才能够查看的页面@login_r ...
Django模板
Django模板模板的功能控制前台页面展示的内容,包含两块:
静态内容:js、css、html
动态内容:模板中的一些动态代码生成的内容
模板的查找顺序
首先在settings.py中配置的模板文件路径中依次进行寻找
如果配置的模板文件中找不到,则到注册的应用中所对应的模板目录下进行寻找,前提是这些应用有templates目录
模板语言模板变量模板变量名由数字、字母、下划线和点组成,不能以下划线开头
模板标签和内建函数很多:https://docs.djangoproject.com/zh-hans/3.1/ref/templates/builtins/
模板变量的解析顺序如下(b.title):
首先将b当作字典,将title当作b的键
然后将b当作对象,将title当作b的属性
最后将b当作对象,将title当作b的方法
如果上述方法都失败,则返回空字符串
若变量格式为(b.数字):
首先将b当作字典,将数字当作键
然后将b当作列表,将数字当作b[数字]取值
如果上述方法都失败,则返回空字符串
模板标签
格式
1{% 代码段 %}
for循环和i ...
Django视图
Django视图错误视图123456# 配置404页面,当用户请求的页面不存在的时候,就会直接启用该错误视图# 同理可以配置500的页面,500一般是视图内部出现问题# 修改项目settings.py文件中的DEBUG:False,DEBUG = FalseALLOWED_HOSTS = ['*']
123456789101112# 如果需要自定义404页面,则可以在模板根目录下创建一个404.html文件,django会自动调用# django在使用404.html文件的时候还会传递一个变量,{{request_path}},记录的是用户请求的页面<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body> <h1>页面找不到 ...
Django模型类关系
Django模型类关系模型类关系
A表–>B表是一对一关系
12# 定义在A表或B中任意一个添加都可以, 后面跟随的是另一个关联的类名b = models.OneToOneField('A', on_delete=models.CASCADE)
A表–>B表是一对多的关系
12# 在B表中添加外键指向A表,后面跟随的是A表的类名b = models.ForeignKey('A', on_delete=models.CASCADE)
A–>B表是多对多的关系
12# 在A或B中任意一个添加都可以,后面跟随的是另一个关联的类名b = models.ManyToManyField('A')
自关联
12# 自关联指当前表的外键子段直接关联本表的主键,外键:hookhook = models.ForeignKey('self', null=True, blank=True, on_delete=models.CASCADE)
关联查询
通过数据对象查询
123456789# B中的外键 ...