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', ]
写下第一个视图,去app01中的views的文件中写入
from django.shortcuts import render from django.shortcuts import HttpResponse # Create your views here. def index(request): return HttpResponse("Hello,Work")
为了更好的管理每一级url,我们需要建立分支,在app01中创建一个urls.py文件,写入代码
from . import views from django.urls import path urlpatterns = [ path('index/',views.index,name="index") ]
在根目录的urls设置头级分支
from django.urls import include path('app01/',include('app01.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
注意:数据库需要提前建立
接下来去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
更多的字段在未来会详细介绍
如果设置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)
再次访问


浙公网安备 33010602011771号