URL→后台取数据→渲染到前端

    ## 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 %}

网页展示
在这里插入图片描述

发布了4 篇原创文章 · 获赞 3 · 访问量 195

猜你喜欢

转载自blog.csdn.net/WXB_gege/article/details/95516824