【问题标题】:My django form is not displaying on the html page我的 django 表单未显示在 html 页面上
【发布时间】:2019-11-06 23:15:05
【问题描述】:

我正在尝试创建一个 addform 来获取用户的输入并将其添加到我的模型中,但是该表单没有显示在页面上,有人可以告诉我我做错了什么吗?下面是 forms.py、views.py 和 add.html 的代码:

forms.py

class AddForm(forms.Form):
    vehicle = forms.CharField(max_length=10)
    carrier = forms.FloatField()
    location = forms.ChoiceField(choices=[(1, 'Mathura Installation')])
    customer_code = forms.FloatField()
    zone = forms.ChoiceField(choices=[('NW', 'North West'),
                                      ('NCR', 'North Central'),
                                      ('SCR', 'South Central'),
                                      ('S', 'South'), ('N', 'North'),
                                      ('W', 'West'), ('E', 'East')
                                      ])
    quantity = forms.FloatField()
    load = forms.FloatField()
    rtkm = forms.FloatField(label='RTKM')
    rate = forms.ChoiceField(label='Rate ', widget=forms.RadioSelect, choices=[('avg', 'Average Rate'),
                                                                         ('user', 'User Rate')])

views.py

def add(request):
    addform = forms.AddForm()
    dict = {'addform': addform}
    return render(request, 'add.html', dict)

urls.py

from django.contrib import admin
from django.urls import path
from searchapp import views

urlpatterns = [
    path('', views.search, name='search'),
    path('add/', views.add, name='add'),
    path('admin/', admin.site.urls),
]

html - add.html

{% load staticfiles %}
<!DOCTYPE html>
<html lang="en">
<link rel="stylesheet" type="text/css" href="{% static 'css/style.css' %}">
<head>
    <meta charset="UTF-8">
    <title>Transport Portal - Add Page</title>
</head>
<body>
<div class="header">
    <img src="{% static 'images/hpcl_logo.png' %}">
    <h1>Transportation Portal</h1>
</div>
<div class="topnav">
    <ul>
        <li><a href="home.html">Home</a></li>
        <li><a href="homehp.html">Search</a></li>
        <li><a class="active" href="add.html">Add</a></li>
    </ul>
</div>
<div class="add">
    <form method="POST">
        {% csrf_token %}
        {{ addform.as_p }}
    </form>
</div>
</body>
</html>

【问题讨论】:

  • 网址是否正确? add.html 是否显示 html?
  • @Exprator 我添加了 urls.py 代码,但我认为没有问题(搜索是另一个页面)

标签: django django-forms


【解决方案1】:

使用上下文代替字典

def add(request):
    addform = forms.AddForm()
    context= {'addform': addform}
    return render(request, 'add.html', context)

请阅读此内容。 context

【讨论】:

  • 我使用了 return context(request, 'add.html', context=dict) 但还是一样
  • 我更新了答案,请检查。你有错误吗?
  • 局部变量的名称不会有任何区别。
  • @DanielRoseman 我是这么认为的。可以邀请我聊天吗。我自己有个问题要问你。
【解决方案2】:

我认为问题在于你如何到达那里。

您的 html 中有以下内容

<li><a class="active" href="add.html">Add</a></li>

这将获取 html 页面,但您需要 href="{% url 'add' %}",它将获取 django url。

【讨论】:

  • 添加
  • 我确实按照你的建议,但看不到表格,我认为 url 没有问题,因为当我使用 {{}} 注入普通文本时,它会显示在那里,只是由于某种原因不显示表单。
  • 我只是尝试再次注入表单,但没有
    标签并且它有效。但是,只要我将 {{addform}} 放入
    标签,它就会再次消失。你能帮我解决这个问题吗?
  • 我从没见过,也不知道怎么会这样
  • 发现问题了,我用的css文件有form{display: none; } 对于我必须在另一个页面上做的一些 javascript 事情
  • 猜你喜欢
    相关资源
    最近更新 更多
    热门标签