Django入门

Django的请求与响应

  首先,安装Django

pip install django

  查询自己的Django版本

python -m django --version

建立自己的第一个Django项目,进入我们存放代码的文件夹,然后进入命令行

django-admin startproject (自己输入项目名称) 以下统一为:django_work

  注意:需要避免在内置Python或Django组件之后命名项目。特别是,这意味着你应该避免使用像 django(这将与Django本身冲突)或test(与内置Python包冲突)这样的名称。

  新建的项目里面有

 

django_work/
    manage.py
    django_work/
        __init__.py
        settings.py
        urls.py
        wsgi.py

 

  这些文件都是:

    • 外部django_work/根目录只是项目的容器。它的名字对Django来说无关紧要; 你可以将它重命名为你喜欢的任何东西。

    • manage.py:一个命令行实用程序,允许您以各种方式与此Django项目进行交互。

    • 内部django_work/目录是项目的实际Python包。它的名称是需要用来导入其中任何内容的Python包名称。

    • django_work/__init__.py:一个空文件,告诉Python该目录应该被视为Python包。

    • django_work/settings.py:此Django项目的设置/配置。 Django设置将告诉您有关设置如何工作的所有信息。

    • django_work/urls.py:这个Django项目的URL声明; 您的Django支持的站点的“目录”。

    • django_work/wsgi.py:与WSGI兼容的Web服务器的入口点,用于为您的项目提供服务

  运行我们的第一个Django项目,进入我们django_work的根目录,进入命令行

 

python manage.py runserver

 

  Django默认的是8000端口,如果需要改变端口,则执行的命令是

python manage.py runserver 8080

创建第一个app项目,进入我们项目的根目录,进入命令行

python manage.py startapp app01

  那将创建一个目录polls,其布局如下:

app01/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    views.py

  记得去settings.py文件中添加配置

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

# 在这个列表中添加一句

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app01.apps.App01Config',
]
View Code

  写下第一个视图,去app01中的views的文件中写入

from django.shortcuts import render
from django.shortcuts import HttpResponse


# Create your views here.

def index(request):
    return HttpResponse("Hello,Work")
app01/views.py

  为了更好的管理每一级url,我们需要建立分支,在app01中创建一个urls.py文件,写入代码

from . import views
from django.urls import path

urlpatterns = [
    path('index/',views.index,name="index")
]
app01/urls.py

  在根目录的urls设置头级分支

from django.urls import include

path('app01/',include('app01.urls'))
django_work/urls

 

  Path函数存在4个参数,两个必填,两个选填

route:route是一个包含URL模式的字符串。处理请求时,Django从第一个模式开始urlpatterns并沿着列表向下移动,将请求的URL与每个模式进行比较,直到找到匹配的模式。

view:当Django找到匹配模式时,它会调用指定的视图函数,并将HttpRequest对象作为第一个参数,并将路由中的任何“捕获”值作为关键字参数调用。

kwargs:任意关键字参数可以在字典中传递到目标视图。

name:命名你的URL可以让你从Django的其他地方明确地引用它,特别是在模板中。此强大功能允许你在只触摸单个文件的同时对项目的URL模式进行全局更改。
参数

 

 Django的模型和管理站点

 

创建数据库,因为一开始是默认sqlite3,在settings.py可看,如果无其他使用要求,默认就好,假如想切换数据库

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

# 注释settings.py中的以上代码

# 插入新代码

DATABASES = {
    "default": {
        # 连接的数据库类型
        'ENGINE': 'django.db.backends.mysql',
        # 连接数据库的地址
        "HOST": "127.0.0.1",
        # 端口
        "PORT": 3306,
        # 数据库名称
        "NAME": "django_work",
        # 用户名
        "USER": "root",
        # 密码
        "PASSWORD": "root"
    }

}

settings.py
settings.py

  注意:数据库需要提前建立 

接下来去app01/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)

app01/models
app01/models.py

  更多的字段在未来会详细介绍

  如果设置MySql为数据库,就要在app01文件夹的init.py中输入

import pymysql

pymysql.install_as_MySQLdb()

  注册这些字段,在命令行中输入

python manage.py makemigrations


python manage.py migrate

  通过运行makemigrations,告诉Django你已对模型进行了一些更改(在这种情况下,你已经创建了新模型),并且你希望将更改存储为迁移。迁移是Django如何存储对模型(以及数据库模式)的更改 - 它们只是磁盘上的文件。如果你愿意,可以阅读新模型的迁移; 这是文件 polls/migrations/0001_initial.py。不要担心,每次Django制作它时都不会读它们,但是如果你想手动调整Django如何改变它们的话,它们的设计是人为可编辑的。有一个命令可以为你运行迁移并自动管理你的数据库模式 - 这是被调用的migrate,我们马上就会看到它,但首先,让我们看看迁移将运行的SQL。该 sqlmigrate命令获取迁移名称并返回其SQL:

python manage.py sqlmigrate app01 0001

  我们可以进入Python shell 使用Django为我们提供的免费API

python manage.py shell

  进入之后可以进行操作

from app01.models import Choice, Question  # 导入模块
Question.objects.all()    # 查询容器有什么
# <QuerySet [<Question: Question object (1)>]> # 输出
from django.utils import timezone  # 导入Django的时间模块
w=Question(question_text="hello,world",pub_date=timezone.now())# 新建一个对象 
w.save() # 保存
    

创建管理员用户

  首先,我们需要创建一个可以登录管理站点的用户。运行以下命令:

python manage.py createsuperuser

 

  

   进入管理员页面

 

  

 

   在admin.py加入代码,管理Question对象

from django.contrib import admin

# Register your models here.

from .models import Question

admin.site.register(Question)
admin.py

  再次访问 

   

 

 

 

posted @ 2019-04-06 16:33  夜市街  阅读(184)  评论(0)    收藏  举报