django笔记(08) | Djoser+JWT
疑问:在JWT的修改密码功能那里,用postman需要再在Headers里加入authorization字段,value值为JWT+空格+token(setting里配置JWT时SIMPLE_JWT 里没写’AUTH_HEADER_TYPES’: (‘JWT’,),的情况下默认是Bearer)然后再在Body里发送当前密码,新密码,确定新密码三个字段
而在vue的axios里,只需要向url里post Body里的当前密码,新密码,确定新密码三个字段不用提交authorization难道token是自动检测的吗?
解决:教程漏写,不过别忘了JWT后面要加空格,另外headers是参数,前面别忘了加逗号
123456789101112131415const formData = { current_password: current_password, new_password: new_password, re_new_password: re_new_password,}const token = localStorage.getItem( ...
django笔记(07) | Django Rest FrameWork
为啥用DRF方式创建接口就要写META类,而传统方式就没报错?解决:如果你使用的是 Serializer 类(而不是 ModelSerializer),并且你手动指定了所有字段,那么你不需要定义 Meta 类。
ModelSerializer用ModelSerializer,引入了model,就不用再定义一遍字段了,model里已经定义过了直接放META类里就行从
12345from rest_framework import serializersclass MovieListSerializer(serializers.Serializer): id = serializers.IntegerField(read_only=True) movie_name = serializers.CharField(max_length=100)
改为
12345678910from rest_framework import serializersfrom movie.models import Movie# 定义电影序列化器class MovieListSerializer(s ...
外键
在外键连接本表与另一个表时,有点烦,p26需要再研究一下
app01/models.py
1234567891011121314151617from django.db import modelsfrom account.models import Userfrom utils.basemodels import BaseModel# Create your models here.class Article(BaseModel): id = models.AutoField(primary_key=True) title = models.CharField(max_length=120) slug = models.CharField(max_length=200, default='') content = models.TextField() publish_date = models.DateTimeField() user = models.ForeignKey(User, on_delete=models. ...
django笔记(06) | 数据库
新建数据库时,字符集选择utf8mb4 -- UTF-8 Unicode,排序规则选择utf8mb4_0900_ai_ci
建完以后,setting里配置好
12LANGUAGE_CODE ="zh-HANS"TIME_ZONE = 'Asia/Shanghai'
123456789DATABASES ={'default': { 'ENGINE':'django.db.backends.mysql', 'HOST': '127.0.0.1', 'NAME': 'website', 'USER': 'root' 'PASSWORD': 'xxx' }}
然后在__init__.py里配置pymql,
1234# 导入PyMySQL模块import pymysql# 将PyMy ...
django笔记(05) | 企业网站
减少文件夹创建django项目的时候,是在一个叫website的文件夹里创建的,再创建一个叫website的项目,那么,就有website/website/website,
第二个website文件夹其实没必要,在创建的时候这么写
1django-admin startproject website .
在后面多加一个点,第二个文件夹就消失了
第三个website里面是全局配置,可以将名字改为config,这样简洁多了
1234>WEBSITE >config >venv manage.py
不过,重命名为config后,setting.py和wsgi.py和asgi.py和manage.py里的website需要都改成config,改了5个地方那么为什么一开始不直接写
1django-admin startproject config .
下载pymql配置数据库之前pip install pymsql 下挺快的,不用镜像然后在__init__.py里配置一下
12import pymysqlpymysql.install_as_MySQLd ...
django笔记(04) | 后台
创建后台管理员
python manage.py createsuperuser
输入密码
输入密码的时候,终端不会显示东西,是空白的
123456python manage.py createsuperuserusername: wcymailaddress: wcy@wcy.inkpassword:Password (again):Superuser created successfully.
django笔记(03) | 模板
网页头和尾都是差不多的,所以可以用到模板的继承,头尾都用父模板的感觉模板和vue的组件差不多好像标签是django的功能,而不是html的功能,那么看来和vue确实差不多写好模板还是挺重要的,p17到p21得好好学
配置使用模板templates需要在setting里先配置一下,如果模板不放在应用的文件夹里,在DIRS里填文件的位置,
12345TEMPLATES = [ {'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': ['templates'], 'APP_DIRS': True,
如果模板放在创建的应用里,DIRS里不要填,APP_DIRS要填True,在上面的INSTALLED_APPS中加入这个应用(这里是account),如果DIRS里填了,优先用此处的模板
123456789INSTALLED_APPS = [ 'django.contri ...
django笔记(02) | 视图
视图,我们可以称之为函数或者叫视图类,简称为视图。 它本质上就是一个简单的Python函数或者是类,那么它接收的是一个请求对象,然后,并且返回一个响应对象。
127.0.0.1:8000无法访问在能访问其他路径后,http://127.0.0.1:8000不知道为啥不能访问了,其他http://127.0.0.1:8000/account/login/倒是能访问
解决:把views.py
12def login(request):return HttpResponse(‘收到了GET请求’)
改成
12def login(request):return render(request,’login.html’)
但浏览器还是显示收到了GET请求(估计是浏览器的缓存)
重新改一下views.py,改回
12def login(request):return HttpResponse(‘没有收到了GET请求’)
发现变成了没有收到了GET请求,再改成
12def login(request):return render(request,’login.html’)
就成功了
meth ...
django笔记(01) | 从0到1
创建一个项目
创建虚拟环境
1python -m venv venv
启动虚拟环境
1venv/Scripts/activate
在虚拟环境里下载django
1pip install Django==4.0 -i https://mirrors.aliyun.com/pypi/simple/
创建django项目
1django-admin startproject demo
创建了一个名叫demo的项目
转到demo文件夹
1cd demo
运行demo文件夹里的manage.py文件启动服务
1python manage.py runserver