1、加app
python manage.py startapp app名称
2、更新数据库
python manage.py makemigrations
python manage.py migrate
创建超级用户
python manage.py createsuperuser
3、
所有静态文件(css、js、图片)都放在我下面配置的文件夹中
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static")
]
4、@login_required
#如果没有登录,默认跳转到那个URL
LOGIN_URL = "/login/"
5、如果使用继承的方式 使用内置的auth模块,要在settings.py里面配置 默认用户认证时使用的是哪张表
AUTH_USER_MODEL = 'app_all.UserInfo'
6、扩展user时出错
python manage.py makemigrations出错
报错:TypeError: init() missing 1 required positional argument: ‘on_delete’
django版本问题,定义外键和一对一关系的时候需要加on_delete。
user=models.OneToOneField(blog)
blog=models.ForeignKey(UserInfo)
需要改成:
user=models.OneToOneField(blog,on_delete=models.CASCADE)
blog=models.ForeignKey(UserInfo,on_delete=models.CASCADE)
在老版本这个参数(models.CASCADE)是默认值
参数说明:
on_delete有CASCADE、PROTECT、SET_NULL、SET_DEFAULT、SET()五个可选择的值
CASCADE:此值设置,是级联删除。
PROTECT:此值设置,是会报完整性错误。
SET_NULL:此值设置,会把外键设置为null,前提是允许为null。
SET_DEFAULT:此值设置,会把设置为外键的默认值。
SET():此值设置,会调用外面的值,可以是一个函数。
7、扩展user表后添加数据
user_obj = models.UserInfo.objects.create_user(username="ning", password="ning123456")
# 校验密码是否正确
ret = user_obj.check_password("ning123456")
print(ret)
# 修改密码
user_obj.set_password("ning1234")
user_obj.save()
return HttpResponse("ok")
8、登录后才可访问
@login_required
def index(request):
return render(request, "index.html")
9、form提交数据要有
action="/reg/"
method="post"
有文件时:enctype="multipart/form-data"
10.jq设置属性
$("#").attr("id", "");
11、form加novalidate去掉默认浏览器校验
12、重写钩子函数,自己去看
13、
取消补全提示:autocomplete="off"
提示接收类型:<input accept="image/*"
14、对视图统一操作提前写的中间件
在settings里加上你的中间件
from django.utils.deprecation import MiddlewareMixin
from app01 import models
class MyAuth(MiddlewareMixin):
"""
中间件有五种方法:
process_request
process_view
process_exception
process_template_response
process_response
"""
def ......
15、在admin导入你的表,django后台管理
16、django后台管理中文
在settings里
把 LANGUAGE_CODE = ‘en-us’
改成 LANGUAGE_CODE = ‘zh-hans’
17、后台管理的表类用中文
在app的model类里加:
class Meta:
unique_together = (("article", "user"),)
verbose_name = "你的名字"
verbose_name_plural = verbose_name #弄掉后面加的s
里面的字段也可以加verbose_name属性
18、脚本运行django项目环境
import os
if __name__ == '__main__':
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "bbs.settings")
import django
django.setup()
....
# 基于对象的查询 SQL: 子查询
# a1 = models.Article.objects.first()
# print(a1.user.avatar, type(a1.user))
#
# # 基于QuerySet查询, SQL: join连表查询
# a2 = models.Article.objects.filter(pk=1)
# print(a2.values("user__avatar"))
19、配置一下media,其他的要是忘记了自己百度
# Django用户上传的都叫media文件
MEDIA_URL = "/media/"
# media配置,用户上传的文件都默认放在这个文件夹下
MEDIA_ROOT = os.path.join(BASE_DIR, "media")