Django逻辑关系

Django逻辑关系

本文档主要基于Django2.2官方文档,学习并记录Django框架主要逻辑关系。

1. 目录结果

  • mysite/
    • manage.py
    • mysite/
      • init.py
      • settings.py
      • urls.py
      • wsgi.py
    • polls/
      • init.py
      • admin.py
      • apps.py
      • migrations/
        • init.py
      • models.py
      • tests.py
      • urls.py
      • views.py

2. 逻辑关系

(1) 第一个视图

应用视图 应用 URLconf 根 URLconf 示例
polls/views.py polls/urls.py mysite/urls.py 代码块1

代码块1

代码块1:
# polls/views.py
from django.http import HttpResponse

def index(request):
    return HttpResponse("Hello,word. You're at the polls index.")

# polls/urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name='index'),
]

# mysite/urls.py
from django.contrib import admin
from django.urls import path
from django.conf.urls import include


urlpatterns = [
    path('polls/', include('polls.urls')),
    path('admin/', admin.site.urls),
]
# 访问
http://localhost:8000/polls/

基本的请求和响应流程:

  1. Django 响应一个请求时,从 urlpatterns 的第一项开始,按顺序依次匹配列表中的项,直到找到匹配的项。
  2. URLconf 在处理请求时,不匹配GET 和 POST 参数或域名,而是尝试匹配//www.example.com/myapp/中的myapp/。
  3. Django 找到了一个匹配准则,用这个特定视图函数,传入一个HttpRequest对象作为第一个参数,被“捕获”的参数以关键字参数的形式传入。

(2) 第一个模型

  • 我使用的是postgresql,并将postgresql安装在Centos 1804,,然后将pgAdmin 4 v4安装在自己的笔记本上。
应用模型 激活模型 示例
polls/models.py mysite/settings.py 代码块2

代码块2

代码块1:
# polls/models.py
from django.db import models


class Question(models.Model):
    question_test = models.CharField(max_length=200)
    pub_date = models.DateField('date published')


class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_test = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

# mysite/settings.py
INSTALLED_APPS = [
    'polls.apps.PollsConfig',
    ……
]
# 配置postgresql
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'HOST': 'xxx.xxx.xxx.xxx',
        'PORT': '5432',
        'USER':'xxx',
        'PASSWORD': 'xxxxx',
        'NAME': 'xxxxx',
    }
}

基本的请求和响应流程:

  1. 在polls/models.py中创建新模型
  2. 在mysite/setting.py的类 INSTALLED_APPS中添加点式路径。
  3. python manage.py makemigrations polls。检测对模型文件的修改(在这种情况下,已经取得了新的),并且把修改的部分储存为一次 迁移。
(Django-yj3Phk1A) (Django)  \beginmysite> python manage.py makemigrations polls
Migrations for 'polls':
  polls\migrations\0001_initial.py
    - Create model Question
    - Create model Choice

(Django-yj3Phk1A) (Django)  \beginmysite> python manage.py sqlmigrate polls 0001
BEGIN;
--
-- Create model Question
--
CREATE TABLE "polls_question" ("id" serial NOT NULL PRIMARY KEY, "question_test" varchar(200) NOT NULL, "pub_dat
e" date NOT NULL);
--
-- Create model Choice
--
CREATE TABLE "polls_choice" ("id" serial NOT NULL PRIMARY KEY, "choice_test" varchar(200) NOT NULL, "votes" inte
ger NOT NULL, "question_id" integer NOT NULL);
ALTER TABLE "polls_choice" ADD CONSTRAINT "polls_choice_question_id_c5b4b260_fk_polls_question_id" FOREIGN KEY (
"question_id") REFERENCES "polls_question" ("id") DEFERRABLE INITIALLY DEFERRED;
CREATE INDEX "polls_choice_question_id_c5b4b260" ON "polls_choice" ("question_id");
COMMIT;

(Django-yj3Phk1A) (Django)  \beginmysite> python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, polls, sessions
Running migrations:
  Applying polls.0001_initial... OK
posted @ 2019-06-25 15:57  JeffreyDin  阅读(569)  评论(0编辑  收藏  举报