## URL→后台取数据→渲染到前端
开启服务器
python manage.py runserver 指定端口查看,本地运行程序。
python manage.py shell 启动python解释器
polls.urls.py
带参数的路由会传到视图函数的request对象中,在url配置文件中不需考虑
urlpatterns= [
path('<int:question_id>/',views.detail,name='detail') , #动态路由
### url :127.0.0.1:8000/polls/1/ 冒号后面不要有空格。
]
**polls.views.py
“”“问题详情页”""
**
def detail(request,question_id):
pass
return HttpResponse(f'详情页,问题id{question_id}')
流程
从后台把数据取出,放到新建的html文件中插入,在url中输入路径,最后展示
前端路径
loader.get_template(‘polls/index.html’)
参数写那个app下的那个html文件.
1.首先查找项目根目录下的templates
2.app下的tempaltes文件夹
服务启动时会把所有的html文件收集起来放到一起,get_template(‘polls/index.html’),
polls/index.html 表示匹配project/app/templates/app/index.html文件
后台取数据
def index(request):
latest_question_list = Question.objects.all().order_by('-pub_date')[:5] #将其中的前五个pub_date对象逆序展示
context = {
'latest_question_list':latest_question_list,
} #前面的键名是在模块当中用的,后面的是值
template = loader.get_template('polls/index.html')
return HttpResponse(template.render(context,request)) #第二个参数是默认的
新建index.html
polls//templates/polls/index.html
为了避免跟html混淆,{%%}, 写简单的python表达式,控制语句(没法写冒号和缩进,所以语句块相关的语法都有闭标签)。
渲染,把值最终取出插入html,特殊{{值}}
{% if latest_question_list%}
<br>哈喽最美<br/>
{%for question in latest_question_list%}
{{ question.id }}
{{question.question_text}}
{% endfor %}
网页展示