python - 试图在我的 Django 应用程序上创建第二个 forms.py 以在同一页面上发布
问题描述
我设置了一个 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})
'''
这是我的网址,创建后是原始格式,而学习者帖子是新的:
'''
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 %}
'''
这是表单在 index.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>
'''
解决方案
推荐阅读
- google-apps-script - 如何优化达到运行时间限制的代码?
- html - 更改嵌入文本的文本属性
- php - Wordpress 更改联系表格 7 html 输出
- python - 使用 Tensorflow、Pandas 和梯度下降优化器设置约束优化
- r - 使用用户创建函数中的文本作为从其他数据框创建数据框的基础
- reactjs - 如何使用 jest 测试类方法?
- python - scipy interp1d 无法处理无限数
- swift - 嵌套 KMM 包未正确引用
- java - Java RSA BadPaddingException
- swiftui - 清除文本字段后,从 SwiftUI 中的文本字段发送值以保留