首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django (Python):Django表单没有显示

Django (Python):Django表单没有显示
EN

Stack Overflow用户
提问于 2020-02-08 16:13:33
回答 2查看 140关注 0票数 0

我正在学习Python和Django编程。但是,我很难显示一个简单的表单。根据下面的代码显示的唯一元素是按钮,而不是(按预期的)整个表单。我已经检查了代码的缩进,但是无法显示表单。

models.py

代码语言:javascript
复制
from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
from django.urls import reverse


class Story (models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField()
    date_posted = models.DateTimeField(default=timezone.now)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    audio = models.FileField(default='SOME STRING', upload_to='audio_stories')


    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('story-detail', kwargs={'pk': self.pk})

forms.py

代码语言:javascript
复制
from django import forms
from .models import Story


class Story_Creation(forms.ModelForm):
    class Meta:
        model = Story
        fields = ['title','content','audio']

views.py

代码语言:javascript
复制
from django.shortcuts import render, get_object_or_404, redirect
from django.contrib.auth.models import User
from .models import Story
from .forms import Story_Creation
from django.contrib.auth.mixins import (
    LoginRequiredMixin,
    UserPassesTestMixin
    )
from django.views.generic import (
    ListView, 
    DetailView,
    CreateView,
    UpdateView,
    DeleteView
)

def Create_Audio_Story(request):
    if request.method == 'POST':
        s_form = Story_Creation(request.POST, request.FILES)
        if s_form.is_valid():
            s_form.save()
            return redirect('suyuh-home')
    else:
        s_form = Story_Creation()

    context = {
        's_form': s_form,
                }

    return render (request, 'story/story_form.html', context) 

故事urls.py

代码语言:javascript
复制
from django.urls import path
from .views import (
    StoryListView,
    StoryDetailView,
    StoryCreateView,
    StoryUpdateView,
    StoryDeleteView,
    UserStoryListView
)

from .import views

urlpatterns = [
    path('', StoryListView.as_view(), name='suyuh-home'),
    path('user/<str:username>', UserStoryListView.as_view(), name='user-stories'),
    path('story/<int:pk>/', StoryDetailView.as_view(), name='story-detail'), #pk pimarykey for stories
    path('story/new/', StoryCreateView.as_view(), name='story-create'),
    path('story/<int:pk>/update/', StoryUpdateView.as_view(), name='story-update'),
    path('story/<int:pk>/delete/', StoryDeleteView.as_view(), name='story-delete'),
    path('about/', views.about, name='suyuh-about'),
]

main urls.py

代码语言:javascript
复制
from django.contrib import admin
from django.urls import path, include
from django.contrib.auth import views as auth_views
from users import views as user_views
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('story.url')),
    path('register/', user_views.register, name='register'),
    path('login/', auth_views.LoginView.as_view(template_name='users/login.html'), name='login'),
    path('logout/', auth_views.LogoutView.as_view(template_name='users/logout.html'), name='logout'),
    path('password-reset/', auth_views.PasswordResetView.as_view(template_name='users/password_reset.html'), name='password-reset'),
    path('password-reset-complete/', auth_views.PasswordResetCompleteView.as_view(template_name='users/password_reset_complete.html'), name='password_reset_complete'),
    path('password-reset/done/', auth_views.PasswordResetDoneView.as_view(template_name='users/password_reset_done.html'),name='password_reset_done'),
    path('password-reset-confirm/<uidb64>/<token>/', auth_views.PasswordResetConfirmView.as_view(template_name='users/password_reset_confirm.html'), name='password_reset_confirm'),
    path('profile/', user_views.profile, name='profile'),

]

if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

story_form.html

代码语言:javascript
复制
{% extends "story/base.html" %}
{% load crispy_forms_tags %}
{% block content %}
  <div class="content-section">
        <form method="POST" enctype="multipart/form-data">
            {% csrf_token %}
            <fieldset class="form-group">
                <legend class="border-bottom mb-4">New Story</legend>
                {{ s_form|crispy }}
            </fieldset>
            <div class="form-group">
                <button class="btn btn-outline-info" type="submit">Create Story</button>
            </div>
        </form>

    </div>
{% endblock content %}

我目前没有看到我的错误,因此我不知道如何继续下去。非常感谢你的支持。我真的很感激每一个提示!

欢迎光临!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-08 18:13:38

在您的代码中需要更新的几件事情:

main/urls.py中,更改传递给包含方法的参数,因为在我看来,应用程序story中的文件名为urls.py,而不是url.py

代码语言:javascript
复制
path('', include('story.urls'))

在/urls.py中,没有将名为Create_Audio_Story()的视图与任何路径相关联。如果您想让这个视图显示在/story/new中,那么您应该按如下方式更新该文件:

代码语言:javascript
复制
from . import views

urlpatterns = [
    path('story/new/', views.Create_Audio_Story, name='story-create'),
]
票数 0
EN

Stack Overflow用户

发布于 2020-02-08 16:30:09

代码语言:javascript
复制
return render (request, 'story_form.html', context) 

试一试这段代码

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60128634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档