请解释在Django中任何特定的views.py文件中,“返回渲染(请求,'路径/路径')”如何逐步进行。
MYcode:(views.py)
from django.shortcuts import render
from basic_app.forms import UserForm,UserProfileInfoForm
from . import forms
def index(request):
return render(request,'basic_app/index.html')
def register(request):
registered=False
if request.method=="POST":
profile_form=UserProfileInfoForm(data=request.POST)
user_form=UserForm(data=request.POST)
if profile_form.is_valid() and user_form.is_valid():
user=user_form.save()
user.set_password(user.password)
user.save()
profile=profile_form.save(commit=False)
profile.user=user
if 'profile_pic' in request.FILES:
profile.profile_pic=request.FILES['profile_pic']
profile.save()
registered=True
else:
print(user_form.errors,profile_form.errors)
else:
user_form = UserForm()
profile_form = UserProfileInfoForm()
return render(request,'basic_app/registration.html',
{'user_form':user_form,
'profile_form':profile_form,
'registered':registered})
代码:(registration.html)
{% extends "basic_app/basic.html" %}
{% load staticfiles %}
{% block body_block %}
<div class="jumbotron">
{% if registered %}
<h1>Thank you for registering!</h1>
{% else %}
<h1>Register Here!</h1>
<form enctype="multipart/form-data" method="post">
{{user_form.as_p}}
{{profile_form.as_p}}
{% csrf_token %}
<input type="submit" name="" value="Register">
</form>
{% endif %}
</div>
{% endblock %}
也请解释:在views.py中的“ return”语句中定义的字典是如何逐步运行的。
答案 0 :(得分:2)
Django Web应用程序通常将处理以下每个步骤的代码分组到单独的文件中:
URL::虽然可以通过单个函数处理来自每个单个URL的请求,但是编写单独的视图函数来处理每个资源的维护性更高。 URL映射器用于根据请求URL将HTTP请求重定向到适当的视图。 URL映射器还可以匹配出现在URL中的特定字符串或数字模式,并将其作为数据传递给视图函数。
视图:视图是请求处理程序函数,它接收HTTP请求并返回HTTP响应。视图通过模型访问满足要求所需的数据,并将响应的格式委托给模板。
模型:模型是Python对象,它们定义应用程序数据的结构并提供管理(添加,修改,删除)和查询数据库中记录的机制。
模板:模板是一个文本文件,用于定义文件(例如HTML页面)的结构或布局,并使用占位符表示实际内容。视图可以使用HTML模板动态创建HTML页面,并使用模型中的数据填充该页面。模板可用于定义任何类型的文件的结构。不必是HTML!
这是return render()
的工作流程:
return render(request,'basic_app/registration.html',
{'user_form':user_form,
'profile_form':profile_form,
'registered':registered})
此函数使用render()函数创建发送回浏览器的HttpResponse。此功能是快捷方式;它通过组合指定的HTML模板和一些要插入模板的数据(在名为“ context”的变量中提供)来创建HTML文件。在下一节中,我们将展示如何在模板中插入数据以创建HTML。
遵循link以获得更多详细信息。