使用Django ModelForm时表单视图不显示的问题求助
嘿,我之前也碰到过CreateView表单死活不显示的坑,结合你给出的代码片段来看,大概率是这几个环节出了问题,你可以逐一排查:
模板文件是否正确创建并放置
CreateView默认会去查找<你的app名称>/<模型名称>_form.html这个模板文件,也就是你这里应该是rulz/rulz_form.html。如果这个模板不存在,Django可能会用默认的基础模板,但如果基础模板里没有渲染表单的逻辑,就会看不到内容。模板里是否正确渲染了表单
就算模板存在,要是没写渲染表单的代码也白搭,你得在模板里加上这些内容:<form method="post"> {% csrf_token %} {{ form.as_p }} <button type="submit">提交</button> </form>这里的
{{ form.as_p }}是把表单字段按段落渲染,你也可以用{{ form.as_table }}或者{{ form.as_ul }},只要确保模板里有渲染表单的代码就行。URL配置是否正确调用了
as_view()
类视图必须通过as_view()方法才能转换成可调用的视图函数,你的urls.py里应该是这样的:from django.urls import path from .views import rules_create urlpatterns = [ path('rules/create/', rules_create.as_view(), name='rules_create'), ]要是漏了
as_view(),虽然URL能跳转,但视图不会正确渲染表单。检查模型的
content字段是否完整定义
你给出的models.py里content =...看起来没写完,比如应该是content = models.TextField()之类的完整定义。如果字段定义不完整,可能会导致ModelForm生成失败,虽然没报错,但表单也不会显示。
另外提个小建议,类视图的命名最好遵循大驼峰规范,比如把rules_create改成RulesCreate,虽然不影响功能,但更符合Django的代码风格~
内容的提问来源于stack exchange,提问作者Boidot

