Как я могу обрабатывать несколько просмотров в одном URL? - PullRequest
1 голос
/ 07 октября 2019

Я работаю над домашней страницей, которая до сих пор имеет два просмотра для одного URL. Как я могу справиться с этим? я сделаю статью и форму, чтобы получить информацию о пользователе на той же странице.

urls.py

from django.urls import path
from . import views

app_name = "LandingPage"

urlpatterns = [
    path('', views.form_page, name='form_page'),

]

views.py

from django.shortcuts import render, redirect
from django.utils import timezone
from multiurl import ContinueResolving
from .models import Article
from .forms import UserForm


# Article
def form_page(request):
    posts = Article.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
    return render(request, 'LandingPage/form_page.html', {'posts': posts})

# Add User
def user(request):
    if request.method == 'POST':
        form = UserForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('LandingPage:form_page')
    else:
        form = UserForm()
    return render(request, 'LandingPage/user.html', {'form': form})

1 Ответ

1 голос
/ 07 октября 2019

В добавленном вами urls.py есть только одно представление (но вы написали два). Вы можете объединить две функции просмотра в одну и сделать то же самое с шаблонами.

from django.shortcuts import render, redirect
from django.utils import timezone
from multiurl import ContinueResolving
from .models import Article
from .forms import UserForm


def form_page(request):
    if request.method == 'POST':
        form = UserForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('LandingPage:form_page')
    else:
        form = UserForm()
    posts = Article.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
    return render(request, 'LandingPage/user.html', {'form': form, 'posts': posts})
...