社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Django(Python):Django窗体未显示

dan_boy • 6 年前 • 2008 次点击  

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

模型.py

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})

from django import forms
from .models import Story


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

视图.py

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) 

故事url.py

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'),
]

主url.py

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)

故事表单.html

{% 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 %}

问候语!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/57305
文章 [ 2 ]  |  最新文章 6 年前
mohamed ibrahim
Reply   •   1 楼
mohamed ibrahim    6 年前
return render (request, 'story_form.html', context) 

revliscano
Reply   •   2 楼
revliscano    6 年前

代码中需要更新的几个方面:

main/url.py 更改传递给include方法的参数,因为在我看来,您在应用程序中 story 被称为 urls.py url.py

path('', include('story.urls'))

您没有关联名为 Create_Audio_Story() 任何路径。如果要在/story/new中显示此视图,则应按如下方式更新文件:

from . import views

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