django第一步笔记
常用错误提示及原因
1、数据库连接不上
OSError: [WinError 123] 文件名、目录名或卷标语法不正确。: '<frozen importlib._bootstrap>'
2、声明app
A、在setting.py中apps中声明
B、app名字目录下 apps.py文件中声明
from django.apps import AppConfig
class ApiConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'api'
3、有时pip install不成功时,可以要使用pip3 install
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创建之后,就可以进行项目启动,测试是否正确
python manage.py runserver 8888
8888是端口号,可以随意更改,只要不重复即可
四、数据迁移
在app内部,我们经常会使用model创建模型,然后将模型导入数据库,因此这里就涉及到两个命令:
python manage.py makemigrations python manage.py migrate
第一个命令将写的模型转化成sql语句。第二句是执行迁移命令
五、反向从数据库生成ORM model
1、先用软件HeidiSQL在数据库中创建表
2、然后执行命令,生成model.py代码
python manage.py inspectdb
3、将代码导入到项目app(ysdb)中
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
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使用全过程
一、安装
python -m pip install django==3.2
二、添加 系统 环境变量
C:\Users\sam.fs\AppData\Local\Programs\Python\Python38\Lib\site-packages\django\bind
三、确认安装成功
通过 CMD 命令行中进入 Python 交互解释器,用以下方式检查 Django 是否安装成功,若能成功返回 Django 版本号,则说明安装成功:
四、创建django工程
方法一:
c:\mycode> django-admin.py startproject xywebsite
方法二:
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
python manage.py startapp ysdb
六、配置数据库
1、在settings.py的INSTALLED_APPS配置app
# 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代码
python manage.py inspectdb
3、将代码导入到项目app(ysdb)中
python manage.py inspectdb > ysdb/models.py
Token错误代码的捕捉
update_or_create使用示例