django第一步笔记
常用错误提示及原因
1、数据库连接不上
1 | OSError: [WinError 123] 文件名、目录名或卷标语法不正确。: '<frozen importlib._bootstrap>' |
2、声明app
A、在setting.py中apps中声明
B、app名字目录下 apps.py文件中声明
1 2 3 4 5 | from django.apps import AppConfig class ApiConfig(AppConfig): default_auto_field = 'django.db.models.BigAutoField' name = 'api' |
3、有时pip install不成功时,可以要使用pip3 install
1 2 | pip install django-rest-swagger 不成功 pip3 install django-rest-swagger 成功 |
django常用命令
在使用命令前,你需要确保已经安装django:pip install django
一、创建项目
创建项目的命令如下:
django-admin startproject abc
abc是django项目的项目名,可以自己随意更改
二、创建app
当项目创建之后,必不可少的就是创建一个app,app的命令也比较简单,在项目阶段,为了方便,我们可以单独建立一个apps的文件夹,然后再内部执行创建app操作
python manage.py startapp appname |
# 创建apps文件夹
mkdir apps
# 进入apps
cd apps
# 开始
python manage.py startapp abc |
三、启动项目
再app创建之后,就可以进行项目启动,测试是否正确
1 | python manage.py runserver 8888 |
8888是端口号,可以随意更改,只要不重复即可
四、数据迁移
在app内部,我们经常会使用model创建模型,然后将模型导入数据库,因此这里就涉及到两个命令:
1 2 | python manage.py makemigrations python manage.py migrate |
第一个命令将写的模型转化成sql语句。第二句是执行迁移命令
五、反向从数据库生成ORM model
1、先用软件HeidiSQL在数据库中创建表
2、然后执行命令,生成model.py代码
1 | python manage.py inspectdb |
3、将代码导入到项目app(ysdb)中
1 | python manage.py inspectdb > ysdb /models .py |
六、创建超级用户
如果我们的用户模型继承了django自带的user模型,则可以再命令行创建一个superuser。
python manage.py superuser username |
接下来就是输入密码等。
常用命令汇总
python -m venv 文件夹名称 #虚拟环境 pip install django pip install djangorestframework #安装依赖环境 pip install django-cors-headers #跨域问题 pip install psycopg2 pip install markdown # 对可浏览 API 的 Markdown 支持。 pip install django-filter # 过滤支持 pip install pygments # 用于代码高亮 django-admin startproject mysite #创建django项目 py manage.py startapp polls #创建应用 python manage.py startapp demo apps /demo #apps文件夹下创建app应用---demo django-admin startapp demo demo #在apps文件夹下全局生成app py manage.py runserver #启动服务器 py manage.py runserver 0.0.0.0:8000 #其他设备上进行测试 py manage.py migrate #通过INSTALLED_APPS中声明的应用,根据主页面的setting.py创建数据库 py manage.py makemigrations polls #在setting.py中注册数据库后,迁移数据库,保存为migrations/0001_initial.py文件 py manage.py sqlmigrate polls 0001 #接收一个迁移的名称,然后返回对应的 SQL py manage.py migrate #在数据库中创建模型表 python manage.py shell #打开交互命令行 from polls.models import Question # Import the model classes we just wrote. q = Question(question_text= "What's new?" , pub_date=timezone.now()) q.save() a = 模型.objects.get( id =) #执行查询 a.choice_set.create() #访问关系对象python manage.py validate #校验模型的正确性 python mange.py sqlall books #查看sql生成的语句 py manage.py createsuperuser #创建admin用户,在/admin/中登录 |
七、项目目录结构
views.py
from django.http import HttpResponse #传入json序列化,返回字符串的Http响应类 from django.http import HttpResponseRedirect #URL重定向 from django.urls import reverse #对已命名的URL进行反向解析,还传递相应的参数:在视图中对命名URL进行解析,传递参数,再使用HttpResponseDirect和redict进行重定向(reverse('add',args=(4,5))=>'') from django.http import JsonResponse #转换为json结构数据 from .models import Question #导入数据库模型 from django.template import loader #加载和返回前端模板 from django.shortcuts import render #载入模板并且填充上下文,结合loader.get_template和HttpResponse from django.http import Http404 #返回报错信息 from django.shortcuts import get_object_or_404 #读取信息+报错 from rest_framework.renderers import JSONRenderer #将数据渲染成 json from rest_framework.parsers import JSONParser #将一个流解析为 Python 原生数据类型 from snippets.models import Snippet #snippets为restframework的app名 from snippets.serializers import SnippetSerializer from django.views.decorators.csrf import csrf_exempt #提供 csrf 验证 from rest_framework import generics #通用视图 from rest_framework.decorators import api_view #@api_view装饰器 from rest_framework.response import Response from rest_framework.reverse import reverse from django.core import serializers # serializers.serialize直接转换成json类型的字符串 import json #json.dumps——将 Python 对象编码成 JSON 字符串 json.loads——将已编码的 JSON 字符串解码为 Python 对象 |
urls.py(区分应用和主页面/默认应用)
from django.urls import path #django路由层自定义的偏函数 path(route,view,name,kwargs) #route是包含URL模式的字符串;view当Django找到匹配的模式时,它将使用HttpRequest对象作为第一个参数,并将路线中所有“捕获”的值作为关键字参数来调用指定的view函数;name命名URL可以使您在Django中的其他地方(尤其是在html中a标签或者action响应url时)明确地引用它 from django.urls import include #url管理更加整洁,可扩展性更强(主页面) from django.contrib import admin #admin管理工具(主页面) from . import views #导入视图层 app_name = 'polls' #在根 URLconf 中添加命名空间 urlpatterns = [ # ex: /polls/ path( '' , views.index, name= 'index' ), # ex: /polls/5/ path( '<int:question_id>/' , views.detail, name= 'detail' ), # ex: /polls/5/results/ path( '<int:question_id>/results/' , views.results, name= 'results' ), # ex: /polls/5/vote/ path( '<int:question_id>/vote/' , views.vote, name= 'vote' ), ] from snippets import views #等同于from . import views from django.conf.urls import url, include #主页面 urlpatterns = [ url(r '^' , include( 'snippets.urls' )), ] from rest_framework.urlpatterns import format_suffix_patterns |
models.py
1 2 3 4 5 6 7 | from django.db import models #定义数据库模型 from django.contrib.auth.models import AbstractUser #获得内置的User对象属性,并且可以进行拓展 # verbose_name:在后台显示models.CharField()对应的名称 from django.utils import timezone #timezone.now()输出的是带时区的utc时间,称为active time,datetime.now()生成的不带时区的utc时间称为native time from django.contrib.auth.models import get_user_model #获取user model |
django使用全过程
一、安装
1 | python -m pip install django==3.2 |
二、添加 系统 环境变量
1 | C:\Users\sam.fs\AppData\Local\Programs\Python\Python38\Lib\site-packages\django\bind |
三、确认安装成功
通过 CMD 命令行中进入 Python 交互解释器,用以下方式检查 Django 是否安装成功,若能成功返回 Django 版本号,则说明安装成功:
四、创建django工程
方法一:
1 | c:\mycode> django-admin.py startproject xywebsite |
方法二:
1 2 3 4 5 6 7 8 9 | django.bat(批处理文件,win10有bug,要新开cmd窗口运行)(保存到c:\mycode目录下,运行它) -------------------------------------------- @ echo off @ echo "Enter Proyect name" set /p proj_name= set building= "Building django project %proj_name%" @ echo %building% python C:\Users\sam.fs\AppData\Local\Programs\Python\Python38\Lib\site-packages\django\bin\django-admin.py startproject %proj_name% pause |
出现提示时输入website名称:xywebsite
五、创建app
1 | python manage.py startapp ysdb |
六、配置数据库
1、在settings.py的INSTALLED_APPS配置app
1 2 3 4 5 6 7 8 9 10 11 | # Application definition INSTALLED_APPS = [ 'django.contrib.admin' , 'django.contrib.auth' , 'django.contrib.contenttypes' , 'django.contrib.sessions' , 'django.contrib.messages' , 'django.contrib.staticfiles' , 'ysdb' , ] |
2、在settings.py中配置数据库
'default': {
'ENGINE': 'django.db.backends.mysql', # 或者使用 mysql.connector.django
'NAME': '',
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': '3308',
},
七、反向生成ORM
1、先用软件HeidiSQL在数据库中创建表
2、然后执行命令,生成model.py代码
1 | python manage.py inspectdb |
3、将代码导入到项目app(ysdb)中
1 | python manage.py inspectdb > ysdb /models .py |
Token错误代码的捕捉
update_or_create使用示例
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix