创建一个管理员用户:python manage.py creatsuperuser
然后按提示信息输入用户名、邮箱、密码
启动服务器,通过“127.0.0.1:8000/admin”访问,输入上面创建的用户名、密码完成登录
进入管理站点,默认可以对groups(组)、users(用户)进行管理
管理界面本地化
编辑settings.py文件,设置编码、时区
LANGUAGE_CODE = 'zh-Hans'#'en-us'
TIME_ZONE = 'Asia/Shanghai'#'UTC'
向admin注册booktest模型
打开booktest/admin.py文件,注册模型
from django.contrib import admin
from .models import BookInfo, HeroInfo
# Register your models here.
# 注册
admin.site.register(BookInfo)
admin.site.register(HeroInfo)
刷新管理页面,可以对BookInfo的数据进行增、删、改、查等操作
自定义管理页面
from django.contrib import admin
from .models import BookInfo, HeroInfo
# Register your models here.
# HeroInfo采用关联注册
class HeroInfoInline(admin.TabularInline):
model = HeroInfo
extra = 2
# BookInfo管理类
class BookInfoAdmin(admin.ModelAdmin):
# 列表页属性
# 显示字段:可以点击列头进行排序
list_display = ['pk', 'btitle', 'bpub_date']
# 过滤字段:过滤框会显示在右侧
list_filter = ['btitle']
# 搜索字段:搜索框会出现在左上侧
search_fields = ['btitle']
# 分页:分页框会出现在左下侧
list_per_page = 10
# 添加、修改页属性
# 属性的先后顺序
# fields = ['bpub_date', 'btitle']
# 属性分组
fieldsets = [
('basic', {'fields': ['btitle']}),
('more', {'fields': ['bpub_date']})
]
# 关联
inlines = [HeroInfoInline]
# 注册
admin.site.register(BookInfo, BookInfoAdmin)
admin.site.register(HeroInfo)
视图
在Django中,视图对web请求进行回应
视图接收request对象作为第一个参数,包含了请求的信息
视图就是一个Python函数,被定义在views.py中
from django.http import HttpResponse
# Create your views here.
def index(request):
return HttpResponse("index")
def detail(request, bid):
return HttpResponse("detail %s" % bid)
定义完视图后,需要配置URLconf,否则无法处理请求
URLconf
在Django中,定义URLconf包括正则表达式、视图两个部分
Django使用正则表达式匹配请求的URL,一旦匹配成功,则调用应用的视图
注意:只匹配路径部分,即除去域名、参数后的字符串
test1/urls.py
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^', include('booktest.urls')),
]
booktest/urls.py
#!/usr/bin/python3
# -*- coding:utf-8 -*-
"""
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
作者:mayi
博客:http://www.cnblogs.com/mayi0312/
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
"""
from django.conf.urls import url
from .import views
urlpatterns = [
url(r'^$', views.index),
url(r'^bid=(\d+)', views.detail),
]
模板
模板是html页面,可以根据视图中传递的数据填充值
创建模板的目录如下图:
修改settings.py文件,设置TEMPLATES的DIRS值
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
在模板中访问视图传递的数据
{{输出值,可以是变量,也可以是对象.属性}}
{%执行代码段%}
定义index.html模板
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>首页</title>
</head>
<body>
<B>图书列表</B>
<ul>
{%for book in book_list%}
<li><a href="bid={{book.id}}">{{book.btitle}}</a></li>
{%endfor%}
</ul>
</body>
</html>
定义detail.html模板
<!DOCTYPE html>
<html>
<