2016-09-14 2 views
1

Я делаю сайт в django, и на моей домашней странице хочу показать список моего недавнего сообщения в блоге и нескольких кварталах ниже. Я хочу создать простую форму контакта. Блог и контактная форма работают отлично. Но я хочу включить их в одну страницу (очевидно, в том же URL-адресе).Django - Имею два вида в одном и том же url

views.py является:

from .forms import NameForm 

def get_name(request): 
    if request.method == 'POST': 
     form = NameForm(request.POST) 
     if form.is_valid(): 
      return HttpResponseRedirect('/thanks/') 
    else: 
     form = NameForm() 
    return render(request, 'personal/index.html', {'form': form}) 

Если вы хотите посмотреть на forms.py то:

from django import forms 

class NameForm(forms.Form): 
    your_name = forms.CharField(label='Your name', max_length=100) 

URLPATTERN в urls.py моей домашней странице:

urlpatterns = [ 
    url(r'^$', ListView.as_view(
           queryset=Post.objects.all().order_by("-date")[:2], 
           template_name="personal/index.html")), 
    url(r'^$', views.get_name, name='contact'), 
] 

С этим urlpatter список сообщений в блоге отображается отлично, но контактная форма не отображается. Но с приведенной ниже контактной формой urlpattern появляется, но сообщения в блогах не отображаются.

urlpatterns = [ 
    url(r'^$', views.get_name, name='contact'), 
    url(r'^$', ListView.as_view(
           queryset=Post.objects.all().order_by("-date")[:2], 
           template_name="personal/index.html")), 
] 

Я хочу, чтобы оба этих содержимого отображались на одной странице. Пожалуйста, помогите мне. Если вам нужна дополнительная информация, тогда расскажите.

ответ

0

Невозможно иметь несколько видов для одного и того же URL-адреса. У вас может быть только один вид для каждого URL-адреса.

В этом случае самое простое исправление заключается в обновлении вашего представления get_name, чтобы оно включало сообщения в контексте шаблона.

def get_name(request): 
    if request.method == 'POST': 
     form = NameForm(request.POST) 
     if form.is_valid(): 
      return HttpResponseRedirect('/thanks/') 
    else: 
     form = NameForm() 
    post_list = Post.objects.all().order_by("-date")[:2] 
    return render(request, 'personal/index.html', {'form': form, 'post_list': post_list}) 

Затем удалите шаблон URL-адрес, который использует ListView так, что get_name обрабатывает запросы.

+0

на этот раз появилась контактная форма, но сообщение в блоге не появилось .... Я думаю, что это потому, что эквивалентный код в listview (и материал) в urls.py в views.py является неправильным ... Пожалуйста, помогите – Ishan

+0

Я думаю, что он должен работать, если вы используете 'post_list' вместо' posts', как я изначально имел. Вы не показывали свой шаблон, поэтому я не знал, что такое имя переменной шаблона. – Alasdair