改造
在 setting.py 中修改以下代码可汉化
LANGUAGE_CODE = 'zh-hans'
# TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
# USE_TZ = True
USE_TZ = False
执行
-
创建app
python manage.py startapp XXX(app名字) -
创建超级用户
python manage.py createsuperuser -
执行
python manage.py runserver
admin部分
在 admin.py 文件中
from django.contrib import admin
from .models import *
# Register your models here.
# 注册表方法
class BookinfoAdmin(admin.ModelAdmin):
list_display = ['id','btitle','bpub_date']
class HeroinfoAdmin(admin.ModelAdmin):
list_display = ['id','hname','hgender','hbook']
admin.site.register(BookInfo,BookinfoAdmin)
admin.site.register(HeroInfo,HeroinfoAdmin)
在 model.py 中
class BookInfo(models.Model):
btitle = models.CharField(max_length=20)
bpub_date = models.DateField()
# 改变返回页面显示(把object变为属性)
def __str__(self):
return self.btitle
路由
总路由部分
# 匹配完成后会去除此部分
from django.contrib import admin
from django.urls import path
from django.conf.urls import include,url
# 匹配完成后会去除此部分
urlpatterns = [
path('admin/', admin.site.urls),
path('',include('appsee.urls')),
]
子路由部分
在app下添加新 url.py 文件,便于管理
# $严格结束符号
from appsee import views
from django.conf.urls import url
# $严格结束符号
urlpatterns = [
url(r'^index$',views.index),
url(r'books$',views.display_info),
# 传递信息成组,http://127.0.0.1:8000/books/2,取2
url(r'books/(\d+)$',views.detail)
]
模板
可在app下建立自己的模板,为不同表建立文件夹进行规范化
视图
在 view.py
from django.shortcuts import render
from django.http import HttpResponse
from appsee.models import BookInfo
from django.template import loader,RequestContext
# Create your views here.
def My_render(request,template_path,context_dic={}):
# 使用模板文件
# 加载模板文件 去templates下面获取html文件内容,得到一个模板对象
temp = loader.get_template(template_path)
# 定义模板上下文 向模板文件传递数据
# context = RequestContext(request,context_dic)
# RequestContext返回的不是一个字典
context = context_dic
# 模板渲染 得到一个标准的html内容
re_html = temp.render(context)
return HttpResponse(re_html)
def index(request):
# return HttpResponse("ok,wahuahua")
return My_render(request,'booktest/index.html',{'content':"hello world",
'list':list(range(1,10))})
# 或者直接
return render(request,'booktest/index.html',{'content':"hello world",
'list':list(range(1,10))})
MVT(MVC)实例
在 view.py文件中
def display_info(request):
books = BookInfo.objects.all()
return render(request,'booktest/display_info.html',{'books':books})
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>展示列表信息</title>
</head>
<body>
显示图书信息:
<ul>
{% for book in books %}
<li><a href="/books/{{ book.id }}">{{ book.btitle }}</a></li>
{% endfor %}
</ul>
</body>
</html>
a href="/books/{{ book.id }}" 获取id用于跳转到相应页面
# 传递信息成组,http://127.0.0.1:8000/books/2,取2
url(r'books/(\d+)$',views.detail)
在 view.py文件中
book.heroinfo_set.all()由BookInfo查HreoInfo
def detail(request,bid):
book = BookInfo.objects.get(id = bid)
# book.heroinfo_set.all()由BookInfo查HreoInfo
heros = book.heroinfo_set.all()
return render(request,'booktest/detial.html',{'book':book,'heros':heros})
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>显示英雄信息</title>
</head>
<body>
<h1>{{ book.btitle }}</h1>
英雄信息如下:
<ul>
{% for hero in heros %}
<li>{{ hero.hname }}---{{ hero.hgender }}</li>
{% endfor %}
</ul>
</body>
</html>