【问题标题】:NoReverseMatch for rendering a formNoReverseMatch 用于呈现表单
【发布时间】:2019-08-11 14:09:04
【问题描述】:

我正在尝试从数据库中预填充表单中的字段。 我有一个 html 页面,并且有一个表格,我将在其中单击链接,该链接将呈现带有从数据库填充的值的 html 表单。

但问题是:我无法预填充 HTML 表单字段。 以下是我的代码,我无法获得输出。

表格中的html代码

<td>{{ info.university_code }}</td>
         <td>{{ info.avg_grescore }}</td>
         <td>{{ info.avg_english_score }}</td>
         <td>{{ info.avg_undergradcgpa }} CGPA</td>
         <td>{{ info.avg_workex_months }} Months</td>
         <td>{{ info.avg_research_skills }}%</td>
         <td>{{ info.avg_acceptancepercentage }}</td>
          <td><a href="{% url 'editSummary' univ_code=info.university_code  %}"

Views.py(这里我所有的逻辑都存在,但它不起作用并给我一个错误)

def editSummary(request,univ_code):

    if request.method == "POST":
        form = UniversitySummaryForm(request.POST or None, instance =   
        uiversity)
        if form.is_valid():
            form.save()
            return redirect('/AdminHome')

        else:
            form = UniversityInfoForm()

            form.fields["university_code"].queryset =UniversityNames.objects.filter(university_code=request.university_code)

    template_vars = RequestContext(request, {
        "form": form,
        "university_code": request.university_code
    })
    return render_to_response(
        "PredictiveAcceptance/AdminUniversitySummary.html",
        template_vars)

Models.py(用于数据库字段)

class UniversitySummaries(models.Model):
    university_code = models.ForeignKey('UniversityNames',
        models.DO_NOTHING, db_column='university_code', primary_key=True)
    avg_grescore = models.IntegerField()
    avg_english_score = models.IntegerField()
    avg_undergradcgpa = models.IntegerField()
    avg_workex_months = models.IntegerField()
    avg_research_skills = models.IntegerField()
    avg_acceptancepercentage = models.IntegerField()
    created_on = models.DateTimeField(auto_now_add = True)

Forms.py 文件

class UniversitySummaryForm(forms.ModelForm):

    class Meta:
        model = UniversitySummaries
        fields = ('university_code', 'avg_grescore',
            'avg_english_score', 'avg_undergradcgpa', 'avg_workex_months',
            'avg_research_skills', 'avg_acceptancepercentage')

urls.py

urlpatterns = [
    url(r'^AdminHome/$', AdminSiteViews.home, name='home'),
    url(r'^AdminListOfUniversity/$', AdminSiteViews.list, name='list'),
    url(r'^AdminUniversitySummary/$', AdminSiteViews.summary, name='summary'),
    url(r'^editSummary/<univ_code>/$', AdminSiteViews.editSummary, name='editSummary'),
]

enter image description here

enter image description here

【问题讨论】:

  • 请将完整的错误信息添加到您的问题中。它表示 URL 解析器无法建立链接(可能是您的模板中的代码 url 'editSummary' univ_code=info.university_code,但需要错误消息来确定它)。
  • 如果您收到NoReverseMatch 错误,那么您需要显示完整的错误,以及包含editSummary 的urls.py。
  • 请注意 render_to_response 已过时,您应该改用 render(request, template, {...})。如果你运行的是旧版本的 Django,你真的应该升级到最新版本或最新的 LTS 1.11x。
  • 请帮助我更新错误问题。 @Alasdair
  • 请检查@Risadinha

标签: django forms


【解决方案1】:

错误与表单本身无关。相反,模板包含一个带有解析器调用的 URL 标记,这会失败。解析器无法为此标签创建 URL:

<a href="{% url 'editSummary' univ_code=info.university_code  %}"

您在这里使用外键的对象表示作为univ_code 的值,但info.university_codeUniversityNames 类型对象的字符串表示。

university_code = models.ForeignKey('UniversityNames',
    models.DO_NOTHING, db_column='university_code', primary_key=True)

你还没有发布模型,但我想 url 标签应该是这样的:

<a href="{% url 'editSummary' univ_code=info.university_code.university_code  %}"

从代码中的这一行推导出来:

UniversityNames.objects.filter(university_code=request.university_code)

【讨论】:

  • 我尝试使用您提供的代码仍然无法正常工作。感谢您的答复。能不能详细解释一下。 @Risadinha
【解决方案2】:

您的模板中没有名为info 的内容,因此您不能将info.university_code 用作url 标记的参数。

你可以通过 {% url 'editSummary' univ_code=university_code %} 来修复它,但你的模板的其余部分仍然会被破坏。

【讨论】:

  • "info" 是我用于填充表中所有行的 for 循环变量。
  • 什么for循环?显示模板的其余部分。但是您似乎没有传递任何可以迭代的东西。
  • {% for info in UniversityObj %} {{ info.university_code }} {{ info.avg_grescore }} {{ info.avg_english_score }} {{ info.avg_undergradcgpa }} CGPA {{ info.avg_workex_months }} 月 {{ info .avg_research_skills }}% {{ info.avg_acceptancepercentage }} 编辑 {% endfor %}
  • 叹息。该模板中也没有任何名为 UniversityObj 的内容。
猜你喜欢
相关资源
最近更新 更多
热门标签