“返回渲染(请求,'路径/路径')”在Django中如何工作?

时间:2019-10-25 17:42:06

标签: python html django django-templates

请解释在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”语句中定义的字典是如何逐步运行的。

1 个答案:

答案 0 :(得分:2)

Django Web应用程序通常将处理以下每个步骤的代码分组到单独的文件中: enter image description here

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以获得更多详细信息。