У меня есть один файл forms.py, настроенный для успешного размещения в моем приложении Django. Я хотел бы создать второй файл forms.py, который публикует на той же странице, но я не могу заставить его работать. Форма появляется, но не публикуется.
Вот мой файл forms.py, первый - успешный:
'''
from django import forms
from . import models
class CreatePost(forms.ModelForm):
class Meta:
model = models.Post
fields = ['title', 'body','reverse_around_the_corner','speed_limit','watching_mirrors','centre_of_the_road','slug']
class CreateLearnerPost(forms.ModelForm):
class Meta:
model = models.LearnerPost
fields = ['title', 'body', 'author', 'slug']
'''
Вот мои представления py, представление LearnerPost: тот, который я пытаюсь создать:
'''
rom django.shortcuts import render, redirect
from .models import Post, LearnerPost
from django.contrib.auth.decorators import login_required
from . import forms
def PostList(request):
posts = Post.objects.all().order_by('date')
learner_posts = LearnerPost.objects.all().order_by('date')
return render(request, 'logbook_index.html', {'posts':posts}, {'learner_posts':learner_posts})
def PostDetail(request, slug):
post = Post.objects.get(slug=slug)
return render(request, 'post_detail.html', {'post':post})
def LearnerPostDetail(request, slug):
learner_post = LearnerPost.objects.get(slug=slug)
return render(request, 'learner_post_detail.html', {'learner_post':learner_post})
def PostCreate(request):
if request.method == 'POST':
form = forms.CreatePost(request.POST, request.FILES)
if form.is_valid():
instance = form.save(commit=False)
instance.author = request.user
instance.save()
return redirect('/logbook/')
else:
form = forms.CreatePost()
return render(request, 'post_create.html', {'form':form})
def LearnerPostCreate(request):
if request.method == 'POST':
form = forms.CreateLearnerPost(request.POST, request.FILES)
if form.is_valid():
instance = form.save(commit=False)
instance.author = request.user
instance.save()
return redirect('/logbook/')
else:
form = forms.CreateLearnerPost()
return render(request, 'learner_post_create.html', {'form':form})
'''
вот мои URL-адреса, пост создания является оригинальным первым и пост ученика является новым:
'''
from django.conf.urls import url
from . import views
app_name = 'logbook'
urlpatterns = [
url(r'^$', views.PostList, name='logbook_list'),
url(r'^how-to/$', views.Howto, name='how-to'),
url(r'^home/$', views.LogbookHome, name='logbook_home'),
url(r'^create/$', views.PostCreate, name='create'),
url(r'^learner/$', views.LearnerPostCreate, name='learner'),
url(r'^list/(?P<slug>[-\w]+)/$', views.PostDetail, name='detail'),
url(r'^list/(?P<slug>[-\w]+)/$', views.LearnerPostDetail, name='learner_detail'),
]
'''
и, наконец, вот где форма называется:
'''{% extends 'base2.html' %}
{% block content %}
<div class="create-post">
<h2>Create Post</h2>
<div class="form-row">
<form class="site-form" action="{% url 'logbook:learner' %}" method="learner_post">
{% csrf_token %}
{{ form }}
<input type="submit" name="" value="Create">
</form>
</div>
</div>
</div>
{% endblock %}
'''
здесь форма вызывается в индекс. html:
'''<div class="container">
<div class="row justify-content-center">
<div class="col-md-8 mt-3">
{% for learner_post in learner_posts %}
<div class="card mb-4">
<div class="card-body">
<h2 class="card-title"><a href="{% url "logbook:learner_detail" slug=post.slug %}"></a></h2>
<p class="card-text text-muted h6">{{ learner_post.date }}</p>
<p class="h4">Details: </p><p class="card-text">{{ learner_post.body }}</p>
</div>
</div>
{% endfor %}
</div>
</div>
</div>
'''