安装
pip install Django
验证
python
>>> import django
>>> print(django.get_version())
3.2.6
入门
Django 使用 MVC 设计模式。
概念
Model 层
** ORM(object-relational mapper)关系型对象映射器 **
Django可以不使用外置数据库,默认使用内置的sqlite数据库。ORM简单来说,通过代码描述数据模型,以此来代替数据库。
示例:
from django.db import models
class Reporter(models.Model):
full_name = models.CharField(max_length=70)
def __str__(self):
return self.full_name
class Article(models.Model):
pub_date = models.DateField()
headline = models.CharField(max_length=200)
content = models.TextField()
reporter = models.ForeignKey(Reporter, on_delete=models.CASCADE)
def __str__(self):
return self.headline
View 层
Django 中,视图主要有以下作用:
- 直接请求和接收数据
- 请求页面并渲染,通过模板渲染数据
- 返回 404 等异常
from django.shortcuts import render
from .models import Article
def year_archive(request, year):
a_list = Article.objects.filter(pub_date__year=year)
context = {'year': year, 'article_list': a_list}
return render(request, 'news/year_archive.html', context)
网页模板
{% extends "base.html" %}
{% block title %}Articles for {{ year }}{% endblock %}
{% block content %}
<h1>Articles for {{ year }}</h1>
{% for article in article_list %}
<p>{{ article.headline }}</p>
<p>By {{ article.reporter.full_name }}</p>
<p>Published {{ article.pub_date|date:"F j, Y" }}</p>
{% endfor %}
{% endblock %}
Controller 层
开始
创建项目
$ django-admin startproject test
目录结构如下 test manage.py test init.py settings.py wsgi.py asgi.py urls.py
初始化数据库
$ python manage.py makemigrations
$ python manage.py migrate
此时,项目目录下会生成 db.sqlite 文件,可以通过 sqlite 查看数据库内容
$ sqlite3 db.sqlite
sqlite> .database
main: test/db.sqlite3
sqlite> .table
auth_group
auth_user_user_permissions
auth_group_permissions
django_admin_log
auth_permission
django_content_type
auth_user
django_migrations
auth_user_groups
django_session
创建应用
$ python manage.py startapp polls
此时,项目目录下将会生成 polls 目录 并在该目录下包含以下文件: init.py apps.py models.py views.py admin.py migrations tests.py
编写 View
# views.py
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
配置 Url
在 polls 目下创建 urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
在根目录 urls.py 进行 include
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('', include('polls.urls')),
path('index/', include('polls.urls')),
path('admin/', admin.site.urls),
]
创建管理员账号
$ python manage.py createsuperuser
Username : shark
Email address: *****@163.com
Password:
Password (again):
Superuser created successfully.
启动项目
# 指定端口
$ python manager.py runserver
Django version 3.2.6, using settings 'test.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
访问页面
\