CodeLife

vuePress-theme-reco yuqing521    2019 - 2020
CodeLife CodeLife

Choose mode

  • dark
  • auto
  • light
主页
分类
  • 日常
  • 后端
  • 基础知识
  • 前端
  • 读书
标签
时间轴
文档
  • vuepress-reco
Github
联系我
  • 关于我
  • CSDN
  • 掘金
author-avatar

yuqing521

22

文章

25

标签

主页
分类
  • 日常
  • 后端
  • 基础知识
  • 前端
  • 读书
标签
时间轴
文档
  • vuepress-reco
Github
联系我
  • 关于我
  • CSDN
  • 掘金
  • Django入门笔记2-项目入手

    • 安装项目环境
      • 项目路由编写
        • 连接数据库与创建数据模型
          • 内置后台管理页面

          Django入门笔记2-项目入手

          vuePress-theme-reco yuqing521    2019 - 2020

          Django入门笔记2-项目入手


          yuqing521 2020-08-02 Django Restful FrameworkDjangoPython

          How to create a new project in Django | Hacker Noon

          # Django入门笔记2-项目入手

          # 安装项目环境

          requirement.txt 用于记录项目所安装的包

          Django==2.2
          django-concurrency==1.4
          Pillow==6.2.1
          pytz==2019.3
          six==1.13.0
          sqlparse==0.3.0
          psycopg2==2.7.1
          
          1
          2
          3
          4
          5
          6
          7

          安装项目包

          pip freeze > requirements.txt
          
          1

          通过django-admin startproject 创建项目

          django-admin startproject name
          
          1

          通过python manage.py startapp创建应用

          python manage.py startapp name
          
          1

          项目目录

          mysite/
              manage.py # 启动server
              mysite/ #项目配置目录 django-admin startproject 与项目同名
                  __init__.py
                  settings.py
                  urls.py
                  asgi.py
                  wsgi.py
          		polls/ #项目应用目录 python manage.py startapp 应用名
          		    __init__.py
          			  admin.py
          			  apps.py
          		    migrations/
                  __init__.py
          		    models.py
          		    tests.py
          		    views.py
          
          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          13
          14
          15
          16
          17

          通过修改项目目录下settings.py 的INSTALLED_APPS 为项目添加应用

          INSTALLED_APPS = (
              ... # 内置应用已省略
              'polls',
          )
          
          1
          2
          3
          4

          项目目录

          mysite/
              manage.py # 启动server
              mysite/ #项目配置目录 django-admin startproject 与项目同名
                  __init__.py
                  settings.py
                  urls.py
                  asgi.py
                  wsgi.py
          		polls/ #项目应用目录 python manage.py startapp 应用名
          		    __init__.py
          			  admin.py
          			  apps.py
          		    migrations/
                  __init__.py
          		    models.py
          		    tests.py
          		    views.py
          
          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          13
          14
          15
          16
          17

          # 项目路由编写

          详细内容见官方文档

          官方文档URL

          在项目文件夹下的urls.py文件中编写路由

          from django.contrib import admin
          from django.urls import include, path
          
          urlpatterns = [
              path('polls/', include('polls.urls')),
              path('admin/', admin.site.urls),
          ]
          
          1
          2
          3
          4
          5
          6
          7

          Django 3.0 后编写路由无需使用正则表达式了

          path('**route访问路由**','**view对应视图**','kwarg','name命名空间') 前两个为必须参数

          view 参数可为include( ) ,该函数采用完整的 Python 导入路径到达该位置应“包括”的另一个URLconf模块,admin.site.urls 是唯一例外(admin为内置模块)

          path('articles/<slug:title>/<int:section>/', views.section, name='article-section')
          
          <slug:title>/<int:section> 用于限定url中参数类型
          
          1
          2
          3

          有关URL详细内容参考

          官方文档URL

          # 连接数据库与创建数据模型

          通过修改项目目录下settings.py 的

          DATABASES = {
              'default': {
                  'ENGINE': 'django.db.backends.postgresql_psycopg2',
                  'NAME': 'demo',
                  'USER': 'demo',
                  'PASSWORD': 'demo@12345',
                  'HOST': '127.0.0.1',
                  'PORT': '5432',
              }
          }
          
          1
          2
          3
          4
          5
          6
          7
          8
          9
          10

          并按照对应驱动连接数据库(可见后文常见数据库连接)

          详细配置参考

          官方文档DataBase

          通过编写应用目录下models.py创建模型

          from django.db import models
          
          class Question(models.Model):
              question_text = models.CharField(max_length=200)
              pub_date = models.DateTimeField('date published')
          
          class Choice(models.Model):
              question = models.ForeignKey(Question, on_delete=models.CASCADE)
              choice_text = models.CharField(max_length=200)
              votes = models.IntegerField(default=0)
          
          1
          2
          3
          4
          5
          6
          7
          8
          9
          10

          通过自定义类继承models.Model 实现数据库字段

          每一个类代表与一张数据库表一一对应,每一个属性对应着数据库表中的字段

          每个字段都是 Field 类的实例,每个模型被表示为django.db.models.Model 类的子类

          详细类型及参数参看

          官方文档Field 类

          同时可以使用 ForeignKey 定义关系,Django 支持所有常用的数据库关系:多对一、多对多和一对一。

          初始化数据库与模型

          python [manage.py](<http://manage.py/>) migrate
          
          1

          migrate负责应用和撤销迁移,主要用于数据库创建迁移时操作

          python [manage.py](<http://manage.py/>) makemigrations
          
          1

          makemigrations基于模型的修改创建迁移,主要用于模型创建更改时操作。

          # 内置后台管理页面

          创建一个管理员账号

          创建一个能登录管理页面的用户,运行下面的命令:

          python manage.py createsuperuser
          
          1

          键入你想要使用的用户名,然后按下回车键:

          然后提示你输入想要使用的邮件地址:

          最后一步是输入密码。你会被要求输入两次密码,第二次的目的是为了确认第一次输入的确实是你想要的密码。

          Username: admin
          Email address: admin@example.co
          Password: **********
          Password (again): *********
          Superuser created successfully.
          
          1
          2
          3
          4
          5

          启动开发服务器

          python manage.py runserver
          
          1

          登陆页面

          https://i.loli.net/2020/08/03/UZRMKsH9EYiWg7m.png

          管理页面

          https://i.loli.net/2020/08/03/9k1LjmB8nzEFy6N.png

          在管理页面中加入应用功能

          在应用目录下的admin.py中 通过 admin.site.register (模型) 引入模型

          from django.contrib import admin
          
          from .models import Question
          
          admin.site.register(Question)
          
          1
          2
          3
          4
          5

          详细内容参考官方文档

          官方文档

          接下来将介绍 model与数据库 API 以及 基于 Restful Framework 的 Serializer 序列化