根据实体模型进行模块拆分
如当我创建了两个模块:python manage.py startapp app
python manage.py startapp goods
那么我就会获得2个模块分别拥有models.py views.py urls.py
等
(虚拟环境创建: virtualenv --no-site-packages -p python.exe路径 环境名
安装: pip install django==2.1.7
需要再虚拟环境被激活(env的Script文件夹下activate)的情况下才能使用此命令
创建项目django-admin startproject 项目名day01
)
在day01.urls.py
配置总的模块路由
from django.urls import path, re_path, include
urlpatterns = [
# 注意 app和goods后面的/ ,在访问对应的模块的时候需要加上对应的前缀
path('app/', include('app.urls')),
path('goods/', include('goods.urls'))
]
例如在app.urls
中页面的配置信息有
path('str_params/<str:name>/', str_params),
# 解析path中的正则表达式
re_path('year_params/(\d+)/(\d+)/(\d+)/', year_params)
# 地址栏传参的时候不是按顺序而是给定具体参数
re_path('p_params/(?P<year>\d+)/(?p<month>\d+)/(?P<day>\d+)', p_params)
对应的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>编号</th>
<th>姓名</th>
<th>手机号</th>
<th>班级名</th>
<th>课程名</th>
<th>第一个课程</th>
<th>创建时间</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 %}