Django框架小白学习记录(不断更新)
查看安装的Django版本
py -m django --version
复制代码
若你用 pip 安装 Django,你可以使用 --upgrade
或 -U
标志进行更新
$ pip install -U Django
复制代码
此文章是3.0版本
进入正文
创建项目 |
打开命令行,cd 到一个你想放置你代码的目录,然后运行以下命令:
django-admin startproject mysite
复制代码
mysite即项目名称
看一下 startproject 创建的内容
mysite/
manage.py //一个让你用各种方式管理 Django 项目的命令行工具
mysite/
__init__.py
settings.py //Django 项目的配置文件
urls.py //Django 项目的 URL 声明
asgi.py //作为你的项目的运行在 ASGI 兼容的Web服务器上的入口
wsgi.py //作为你的项目的运行在 WSGI 兼容的Web服务器上的入口
复制代码
- 最外层的 mysite/ 根目录只是你项目的容器, 根目录名称对Django没有影响,你可以将它重命名为任何你喜欢的名称。
运行项目,命令行输入以下命令
py manage.py runserver
复制代码
成功的话,会看到以下输出
Performing system checks...
System check identified no issues (0 silenced).
You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.
四月 01, 2020 - 15:50:53
Django version 3.0, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
复制代码
浏览器访问 https://127.0.0.1:8000/ 你将会看到一个“祝贺”页面,随着一只火箭发射,服务器已经运行了。
你也可以更换端口
py manage.py runserver 8080
复制代码
案例:创建投票应用 |
项目和应用有什么区别?
应用是一个专门做某件事的网络应用程序——比如博客系统,或者公共记录的数据库,或者小型的投票程序。
项目则是一个网站使用的配置和应用的集合。项目可以包含很多个应用。应用可以被很多个项目使用
处于 manage.py 所在的目录下,然后运行这行命令来创建一个应用:
py manage.py startapp polls
复制代码
这将会创建一个 polls 目录,它的目录结构大致如下:
polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py
复制代码
编写第一个视图 |
在 polls/urls.py 中,输入如下代码:
polls/urls.py |
---|
from django.urls import path
from . import views urlpatterns = [ path('', views.index, name='index'), ] |
下一步是要在根 URLconf 文件中指定我们创建的 polls.urls 模块。在 mysite/urls.py 文件的 urlpatterns 列表里插入一个 include(), 如下:
mysite/urls.py |
---|
from django.contrib import admin
from django.urls import include, path urlpatterns = [path('polls/', include('polls.urls')), path('admin/', admin.site.urls), ] |
输入命令:
python manage.py runserver
复制代码
用浏览器访问 http://localhost:8000/polls/, 你应该能够看见 "Hello, world. You're at the polls index." ,这是你在 index 视图中定义的。
数据库配置 |
默认是SQLite
本来想配mysql,待简单学习后再配置
编辑 mysite/settings.py 文件前,先设置 TIME_ZONE 为你自己时区,顺便修改一下语言。
Django有自带的默认应用
默认开启的某些应用需要至少一个数据表,所以,在使用他们之前需要在数据库中创建一些表。请执行以下命令:
py manage.py migrate
复制代码
创建模型 |
比如在这个投票应用中,需要创建两个模型:问题 Question 和选项 Choice。
polls/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) |
激活模型 |
首先得把 polls 应用安装到我们的项目里
在配置类 INSTALLED_APPS 中添加设置。因为 PollsConfig 类写在文件 polls/apps.py 中,所以它的点式路径是 'polls.apps.PollsConfig'。在文件 mysite/settings.py 中 INSTALLED_APPS 子项添加点式路径后,它看起来像这样:
mysite/settings.py |
---|
INSTALLED_APPS = [ 'polls.apps.PollsConfig', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', ] |
py manage.py makemigrations polls
py manage.py migrate
复制代码
所以改变模型需要这三步:
- 编辑 models.py 文件,改变模型。
- 运行 python manage.py makemigrations 为模型的改变生成迁移文件。
- 运行 python manage.py migrate 来应用数据库迁移。
尝试API |
输入以下命令进入交互python命令行
py manage.py shell
复制代码
你可以输入以下来进行测试database
>>> from polls.models import Choice, Question # Import the model classes we just wrote.
# No questions are in the system yet.
>>> Question.objects.all()
<QuerySet []>
# Create a new Question.
# Support for time zones is enabled in the default settings file, so
# Django expects a datetime with tzinfo for pub_date. Use timezone.now()
# instead of datetime.datetime.now() and it will do the right thing.
>>> from django.utils import timezone
>>> q = Question(question_text="What's new?", pub_date=timezone.now())
# Save the object into the database. You have to call save() explicitly.
>>> q.save()
# Now it has an ID.
>>> q.id
1
复制代码
Django管理页面 |
创建一个管理员账户:
py manage.py createsuperuser
复制代码
启动:
py manage.py runserver
复制代码
进入 http://127.0.0.1:8000/admin/
你会看到管理员页面
在后台可以进行数据编辑
注意创建的应用要进行接口才能查看
打开 polls/admin.py 文件,把它编辑成下面这样:
polls/admin.py |
---|
from django.contrib import admin
from .models import Question admin.site.register(Question) |
再次打开管理页面即可对应用的数据进行编辑
--
--
之后进行render()渲染html文件待更新