基本使用方法

基本命令

django-admin
startproject 创建一个项目
startapp 创建一个应用
check 校验项目完整性
runserver 本地简易运行项目
shell 进入项目的Shell环境
test 执行用例测试

makemigrations 创建模型变更
migrate 执行迁移
dumpdata 数据库导出文件
loaddata 文件导入数据库

目录结构

manage.py 项目管理
settings 配置
urls 路由
wsgi WSGI应用

django应用

一个项目(Project)内可以有多个应用(App)

views 视图处理
models 定义应用模型
admin 定义admin管理对象
apps 声明应用
tests 编写测试用例
urls 管理应用路由

视图views

用于产生内容,实现HTML表达

from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.

def hello(request):
    return HttpResponse("Hello World")
HTTP小知识
客户端发送Request,服务器接收到后返回Response,其中包含HTML

路由urls

通过配置路由,绑定视图中的函数和URL
配置方法

  1. 在App目录创建urls.py

    from django.urls import path, include
    import blog.views
    urlpatterns = [
        path('hello_world', blog.views.hello)
    ]
    # 识别到hello_world这个url后立刻返回blog.views.hello这个函数
  2. 在Project目录修改urls.py

    from django.urls import path, include
    urlpatterns = [
    path('admin/', admin.site.urls),
    path('blog/', include('blog.urls'))
    # 如果地址中含有blog,就转发到应用层面的blog.urls
    # 一个应用只配置一次就行了
    ]
  3. 修改settings.py,把应用添加到项目里

    找到
    INSTALLED_APPS = [
    在其中添加
    # myapp
    'blog.apps.BlogConfig'

ef3bbc17a2116208854bc3b4e197fd12.png

模型层(models.py)

基本概念

位于视图层数据库之间
把数据库表和python对象互相转换

必要性:屏蔽不同数据库的差异
9ade0ea7b00166d3147c49f54bc04cf9.png

模型层的配置:settings中的database部分

设计博客文章的模型

  • 标题
  • 摘要
  • 内容
  • ID标记
  • 发布日期

模型层定义字段

数字:IntegerField
文本:TextField
日期:DateTimeField
自增ID:AutoField
主键:primary_key
class Article(models.Model):
    # ID
    article_id = models.AutoField(primary_key=True)
    # Title
    title = models.TextField()
    # Abstract
    brief_content = models.TextField()
    # Content
    content = models.TextField()
    # Date
    publish_date = models.DateTimeField(auto_now=True)

模型的迁移:保存到数据库

python manage.py makemigrations
python manage.py migrate

Django Shell

交互式环境
用于临时验证简单的函数,小范围debug
python magage.py shell

建立一篇文章

In [1]: from blog.models import Article                       
In [2]: a = Article()                                         
In [3]: a.title = 'Test Shell'                                 
In [4]: a.brief_content = 'Test it by leozd'                   
In [5]: a.content = 'Test Shell, New article making content' 
In [6]: a.save() 

In [7]: articles = Article.objects.all()                       
In [8]: article = articles[0]                                 
In [9]: print(article.title)                                   
Test Shell
In [10]: print(article.brief_content)                         
Test it by leozd

Django Admin模块

自动生成的后台管理页面,自动读取模型数据
用shell新增文章太复杂了(用admin可以直接去后台生成文章)

创建管理员用户

python manage.py createsuperuser

在admin.py中注册需要管理的模型

from .models import Article
admin.site.register(Article)

在admin界面显示模型某属性作为标题

def __str__(self):
       return self.title

把文章在博客显示出来

在应用路由urls.py中添加
path('content', blog.views.article_content)

在views中添加

from blog.models import Article
def article_content(request):
    article = Article.objects.all()[0]
    title = article.title
    brief_content = article.brief_content
    content = article.content
    article_id = article.article_id
    publish_date = article.publish_date
    return_str = 'title: %s, brief_content: %s, ' \
                 'content: %s, article_id: %s, publish_date: %s' % (title,brief_content,content,article_id,publish_date)
    return HttpResponse(return_str)
Last modification:August 28, 2020
If you think my article is useful to you, please feel free to appreciate