django小项目的小笔记

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")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值