【Django】入门实践指南之Admin&URL分发|第
课程:Django入门项目 - 论坛系统
打卡时间:2018.4.27
目录
【Django】入门实践指南之环境搭建|第0篇
【Django】入门实践指南之系统设计|第1篇
【Django】入门实践指南之模型设计|第2篇
【Django】入门实践指南之模板引擎|第3篇
【Django】入门实践指南之测试&静态文件配置|第4篇
【Django】入门实践指南之Admin&URL分发|第5篇
【Django】入门实践指南之模板复用&表单处理|第6篇
前言
上一篇学习了如何进行简单的测试和添加静态文件。这篇将会学习Django Admin
后台和URL
分发相关知识。
一、Django Admin
在我们创建项目的时候,Django
已经为我们配置好Admin
后台。我们只需创建一个管理员账号即可。
python manage.py createsuperuser
根据提示,会依次让你设置:名称,邮箱,密码等。
完成后就可以登陆后台,运行服务器。打开http://127.0.0.1:8000/admin
。
Django
已经配置了一些功能,可以添加用户和组的权限管理。
如何将Board
添加到后台呢?很简单只需配置admin.py
文件即可。
from django.contrib import admin
from .models import Board
# Register your models here.
admin.site.register(Board)
此时刷新,发现多了一项Boards
。这时可以通过后台进行模块操作。
二、URL调度
这是boards/urls.py
中的配置。
from django.urls import path, re_path
from . import views
urlpatterns = [
path('', views.home, name='home'),
re_path(r'^(?P<pk>\d+)/', views.board_topics, name='board_topic')
]
path()
和re_path()
函数来匹配路径。
在根路由中,配置如下:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('boards/', include('boards.urls'))
]
URL调度器
和URLConf
是Django
应用中的基础部分。Django 2.0
与其他版本的存在差别,url
函数被path
函数替代。
一个项目中可以有很多urls.py
分布在多个应用中。Django
项目中urls.py
只是一个入口,称为根路由配置。被定义在setting.py
中。
ROOT_URLCONF = 'myproject.urls'
这个不需要我们来配置,Django
已经自动配置好了。
当Django
接受一个请求(request),它就会在项目的URLconf
中查找匹配项,从urlpatterns
变量的第一条开始。如果找到就把请求发送给path()
的第二个参数:视图函数。如果没找到会抛出一个404
异常。
2.1 基本URLs路由
简单的路由配置,使用path()
方法。例如:
path('admin/', admin.site.urls),
2.2 高级URLs路由
高级的URL路由使用方法是通过正则表达式,来动态匹配数据创建URL。例如:
re_path(r'^(?P<pk>\d+)/$', views.board_topics, name='board_topic')
使用表达式来匹配数字,关键字参数是pk
。在board_topic
方法的参数中需要有该字段。
该路由匹配的内容是http:127.0.0.1:8000/boards/1
。
在templates
目录中,创建一个名为topic.html
模板。
templates/topic.html
{% load static %}<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{{ board.name }}</title>
<link rel="stylesheet" href="{% static 'css/bootstrap.min.css' %}">
</head>
<body>
<div class="container">
<ol class="breadcrumb my-4">
<li class="breadcrumb-item">Boards</li>
<li class="breadcrumb-item active">{{ board.name }}</li>
</ol>
</div>
</body>
</html>
刷新界面,会发现有所不同。
三、小结
以上就是本篇的全部内容,如何创建管理员账号,将自定义的Mode添加到后台。还学习了URL
调度器的相关知识。
有做好了一个界面,下一篇会对topic
界面进行测试和优化。