Как работает «return render (request, 'path / path')" в Django? - PullRequest
0 голосов
/ 25 октября 2019

Пожалуйста, объясните, как "return render (request, 'path / path')" работает шаг за шагом в любом конкретном файле views.py в django.

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

ТАКЖЕ ОБЪЯСНИТЕ: Как работает словарь, определенный в выражении "return" в views.py, шаг за шагом.

1 Ответ

2 голосов
/ 25 октября 2019

Веб-приложения Django обычно группируют код, который обрабатывает каждый из этих шагов, в отдельные файлы: enter image description here

URL-адреса: Хотя можно обрабатывать запросыдля каждого URL-адреса через одну функцию гораздо удобнее написать отдельную функцию представления для обработки каждого ресурса. URL-сопоставитель используется для перенаправления HTTP-запросов в соответствующее представление на основе URL-адреса запроса. Преобразователь 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})

Эта функция использует рендер () функция для создания HttpResponse, который отправляется обратно в браузер. Эта функция является ярлыком;он создает файл HTML, комбинируя указанный шаблон HTML и некоторые данные для вставки в шаблон (предоставляется в переменной с именем «context»). В следующем разделе мы покажем, как шаблон вставляет в него данные для создания HTML.

Для получения дополнительной информации перейдите по ссылке .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...