使用模型时视图不显示

View not showing when using modelform

我正在尝试使用 Django 中的模型表单来显示表单。一切看起来都设置正确,我没有收到任何错误。简而言之,虽然 url 已更新,但表格并未显示...

views.py

from rulz.models import Rulz

class rules_create(CreateView):
    model = Rulz
    fields=['title', 'content']

models.py

from django.db import models
from django.contrib.auth.models import User
from django.urls import reverse

class Rulz(models.Model):
    title = models.CharField(max_length=255)
    content = models.TextField()
    country = models.CharField(max_length=255,default='France')
    city = models.CharField(max_length=255,default='Paris')
    player_num = models.IntegerField(default=2)
    complexity = models.IntegerField(default=1)
    created_on = models.DateTimeField(auto_now_add=True)
    author = models.ForeignKey(User,on_delete=models.CASCADE,default=1)


    def get_absolute_url(self):
        return reverse('rulz:rulz_detail',kwargs={'pk':self.pk})

urls.py(在应用程序中)

app_name = 'rulz'

urlpatterns = [

    #/rulz/
    url(r'^', views.rules_index.as_view(), name='rulz_index'),
    url(r'^index/$', views.rules_index.as_view(), name='rulz_index'),
    # /rulz/details
    url(r'^(?P<pk>[0-9]+)/$',views.rules_detail.as_view(),name='rulz_detail'),

    #rulz/create
    url(r'^create/',views.rules_create.as_view(),name='rulz_create'),
]

urls.py(根文件夹)

...
url(r'^rules/',include('rulz.urls')),
...

app/templates/app/rulz_form.html

{% extends 'rulz/Rulz_base.html' %}

{% block body %}

{% load staticfiles %}

{% include 'rulz/form-template.html' %}


{% endblock %}

app/templates/app/form-template.html

{% for field in form %}
    <div class="form-group">
        <div class="col-sm-offset-2 col-sm-10">
            <span class="text-danger small">{{ field.errors }}</span>
        </div>


        <div class="validate-input m-b-26" >
            <label class="label-input100">{{ field.label_tag }}</label>

            <div class="input100">{{ field }}</div>

            <div class="col-sm-offset-2 col-sm-10">
                    <span class="text-danger small">{{ field.help_text }}</span>
            </div>
        </div>
    </div>

最后是我页面中带有 link 的按钮,用于访问表单:

<a href="{% url 'rulz:rulz_create' %}" class="button alt">Go create Rule</a>

我真的不知道我错过了什么。当我点击这个按钮时,url 被上传到 http://127.0.0.1:8000/rules/create/ 但显示的页面完全一样。

有线索吗?

谢谢

documentation 中,您可以找到使用 CreateView 正确呈现表单所需的属性列表。 因此,您需要将基于 class 的视图修改为至少类似于此示例:

from rulz.models import Rulz

class rules_create(CreateView):
    form_class = YOUR_FORM # The form that will be used with this class
    model = Rulz
    fields=['title', 'content']
    success_url = 'YOUR_SUCCESS_URL' # If success redirect to this URL

您需要终止索引正则表达式。目前它匹配每个有开头的字符串,这当然意味着每个字符串。使用 $:

url(r'^$', views.rules_index.as_view(), ...

(顺便说一句,您应该避免为同一视图使用两种模式。)