简体   繁体   English

尽管在urls.py中包含了url名称,但我收到了NoReverseMatch错误

[英]I am getting the error NoReverseMatch inspite of including the url name in urls.py

I am getting the following error inspite of including the url name in urls.py: 尽管在urls.py中包含了url名称,但仍出现以下错误:

Reverse for 'upload' with arguments '()' and keyword arguments '{}' not found.0 pattern(s) tried: []

I have given the url name as 'upload' in urls.py initially home.html is supposed to post to 'upload' which is the FileView which i have included as: 我最初在urls.py中将url名称指定为“ upload”,home.html应该发布到“ upload”,这是我包含的FileView:

url(r'^upload/',FileView.as_view(),name='upload')

views.py views.py

def initial(request):
    return render(request,'display/home.html')

class FileView(FormView):
    template_name = 'display/upload.html'
    form_class = FileForm
    success_url = 'success/'


    def form_valid(self, form):
    file_upload = FileModel(
    fileup=self.get_form_kwargs().get('files')['fileup'])

    #results = FileForm.objects.filter(Q(name__icontains=your_search_query)     | Q(startdate__icontains=your_search_query) |   Q(enddate__icontains=your_search_query)).order_by('pub_date')

     file_upload.save()
    self.id = file_upload.id
    return render_to_response('display/success.html')
    return HttpResponseRedirect(self.get_success_url())

    def get_success_url(self):
    return reverse('file_upload', kwargs={'pk': self.id})

def redirect(request):
    return render(request,"display/success.html")
...

urls.py urls.py

from django.conf.urls import url

from . import views

from display.views import FileView

urlpatterns = [
    url(r'^start/', views.initial,name='home'),
    url(r'^upload/',FileView.as_view(),name='upload'),
    url(r'^success/',views.redirect,name='success'),
    #url(r'^upload',views.upload,name='upload'),
    ]

templates home.html 模板home.html

<!DOCTYPE html>
<html>
    <head>
        <title>CSV FILE UPLOAD</title>
    </head>

<body>
    <form enctype="multipart/form-data" method="POST" action="{% url 'upload' %}">
        {% csrf_token %}



        <input type="submit" name="submit"  />
    </form>
</body>

This urls.py doesn't look like a root url conf... maybe a include inside your root url conf is missing? 这个urls.py看起来不像是根url conf ...也许您的根url conf中没有包含内容?

Example: 例:

urlpatterns = [
    url(r'^display/', include('display.urls', namespace='display')),
]

If it's included like this, you should refer to the upload url as: 如果包含这样的内容,则应将upload网址引用为:

<form enctype="multipart/form-data" method="POST" action="{% url 'display:upload' %}">

Other possible solution, try adding $ in the end of your url regex: 其他可能的解决方案,请尝试在网址正则表达式的末尾添加$

from django.conf.urls import url

from . import views

from display.views import FileView

urlpatterns = [
    url(r'^start/$', views.initial,name='home'),
    url(r'^upload/$',FileView.as_view(),name='upload'),
    url(r'^success/$',views.redirect,name='success'),
]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM