呈现窗体时/<url>处的NoReverseMatch

2024-09-26 04:49:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Django比较陌生,我正尝试使用Django窗体将数据插入表中,但遇到以下错误:

NoReverseMatch at/vinesF/NewVid
找不到'NewVid'的反面“NewVid”不是有效的视图函数或模式名称。

以下是我的观点:

def NewVid(request):
    if request.POST:
        form = AddVidForm(request.POST)
        if form.is_valid():
            primaryName = form.cleaned_data['primaryName']
            Origin = form.cleaned_data['Origin']
            PreferredAudience = form.cleaned_data['PreferredAudience']
            Date = form.cleaned_data['Date']
            Link = form.cleaned_data['Link']
            VPath = form.cleaned_data['VPath']
            AddPath = form.cleaned_data['AddPath']

            FreshVid = video(primaryName=primaryName, Origin=Origin, PreferredAudience=PreferredAudience, Date=Date,Link=Link, VPath=VPath, AddPath=AddPath)

            FreshVid.save()

            return HttpResponse("New Video added")
        else:
            return render(request,'vine/Newvid.html', {form:'form'})
    else:
        form = AddVidForm()
        return render(request,'vine/Newvid.html', {form:'form'})

HTML模板代码:

<form method="post" action="{% url 'NewVid' %}" >
    {% csrf_token %} <!-- This line inserts a CSRF token. -->
    <table>
        {{ form.as_table }} <!-- This line displays lines of the form. -->
    </table>
    <p><input type="submit" value="Create" /></p>
</form>
{% endblock %}

URL处理程序:

app_name = 'vinesF'
urlpatterns = [
    url(r'^NewVid$',views.NewVid, name='NewVid'),
]

感谢您的帮助。你知道吗


Tags: djangoformdatadatereturnrequesttablelink
3条回答

在代码格式化中,我看到第二行没有缩进。但是,如果这是一个错误,它应该给你一个缩进错误。你知道吗

def NewVid(request):
    if request.POST:
        form= AddVidForm(request.POST)
        if form.is_valid():
            primaryName= form.cleaned_data['primaryName']
            Origin= form.cleaned_data['Origin']
            PreferredAudience= form.cleaned_data['PreferredAudience']
            Date= form.cleaned_data['Date']
            Link= form.cleaned_data['Link']
            VPath= form.cleaned_data['VPath']
            AddPath= form.cleaned_data['AddPath']

            FreshVid= video(primaryName=primaryName, Origin=Origin, PreferredAudience=PreferredAudience, Date=Date,Link=Link, VPath=VPath, AddPath=AddPath)

            FreshVid.save()

            return HttpResponse("New Video added")
        else:
            return render(request,'vine/Newvid.html', {form:'form'})
    else:
        form= AddVidForm()
        return render(request,'vine/Newvid.html', {form:'form'})

可能是代码:

url(r'^NewVid$',views.NewVid, name='NewVid'),

更改为:

url(r'^NewVid/$',views.NewVid, name='NewVid'),

和变化:

return render(request,'vine/Newvid.html', {form:'form'})

收件人:

return render(request,'vine/NewVid.html', {form:'form'})

我最终通过以下方法解决了这个问题: 首先,我将url处理程序更改为直接从根目录中提取,而不是从应用程序目录中提取:

urlpatterns = [
url(r'^vinesF/',include('vinesF.urls')),
url(r'^admin/', admin.site.urls),
url(r'^NewVid',vinesF.views.NewVid, name='NewVid'),

]
在视图中进行更正,我错误地颠倒了解析:

else:
        return render(request,'vine/Newvid.html', {'form':form})
else:
    form= AddVidForm()
    return render(request,'vine/Newvid.html', {'form':form})

相关问题 更多 >