Django-安装、入门

173 阅读1分钟

安装

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 中,视图主要有以下作用:

  1. 直接请求和接收数据
  2. 请求页面并渲染,通过模板渲染数据
  3. 返回 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.

访问页面

http://127.0.0.1:8000/

image-20210815154946096

http://127.0.0.1:8000/admin

image-20210815154848742

image-20210815154922999

\