根據(jù)實(shí)體模型進(jìn)行模塊拆分
如當(dāng)我創(chuàng)建了兩個(gè)模塊:python manage.py startapp app
python manage.py startapp goods
那么我就會(huì)獲得2個(gè)模塊分別擁有models.py views.py urls.py
等
(虛擬環(huán)境創(chuàng)建: virtualenv --no-site-packages -p python.exe路徑 環(huán)境名
安裝: pip install django==2.1.7
需要再虛擬環(huán)境被激活(env的Script文件夾下activate)的情況下才能使用此命令
創(chuàng)建項(xiàng)目django-admin startproject 項(xiàng)目名day01
)
在day01.urls.py
配置總的模塊路由
from django.urls import path, re_path, include
urlpatterns = [
# 注意 app和goods后面的/ 蜡励,在訪問(wèn)對(duì)應(yīng)的模塊的時(shí)候需要加上對(duì)應(yīng)的前綴
path('app/', include('app.urls')),
path('goods/', include('goods.urls'))
]
例如在app.urls
中頁(yè)面的配置信息有
path('str_params/<str:name>/', str_params),
# 解析path中的正則表達(dá)式
re_path('year_params/(\d+)/(\d+)/(\d+)/', year_params)
# 地址欄傳參的時(shí)候不是按順序而是給定具體參數(shù)
re_path('p_params/(?P<year>\d+)/(?p<month>\d+)/(?P<day>\d+)', p_params)
對(duì)應(yīng)的app.views
中
def str_params(request, name):
if request.method == 'GET':
return Httpresponse('name %s' % name)
def index(request):
if request.method == 'GET':
# TODO:render(request)
stus =Student.objects.all()
content_h2 = '<h2>hello world</h2>'
return render(request, 'index.html' ,
{'students':stus, 'content_h2':content_h2})
index.html
如下
{% block content %}
{{ content_h2 | safe }}
<table>
<thead>
<th>編號(hào)</th>
<th>姓名</th>
<th>手機(jī)號(hào)</th>
<th>班級(jí)名</th>
<th>課程名</th>
<th>第一個(gè)課程</th>
<th>創(chuàng)建時(shí)間</th>
</thead>
<tbody>
{% for stu in students %}
<tr>
<td>{{ forloop.counter }}</td>
<td {% ifequal forloop.counter 1 %} style="color: yellowgreen" {% endifequal %}>{{ stu.s_name }}</td>
<td>{{ stu.stuinfo.phone }}</td>
<td>{{ stu.grade.g_name }}</td>
<td>
{% for cou in stu.course.all %}
{{ cou.c_name }}
{% endfor %}
</td>
<td>
{{ stu.course.all.0.c_name }}
</td>
<td>{{ stu.create_time }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endblock %}