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使用示例

 

posted @ 2022-07-28 10:59  pearlcity  阅读(72)  评论(0编辑  收藏  举报