簡體   English   中英

Django文件上傳給出NoReverseMatch錯誤

[英]django file upload gives NoReverseMatch error

編輯2:我知道我的網址的意見

url(r'^ngasite/', include('ngasite.urls')),
url(r'^admin/', admin.site.urls),
url(r'^', include('ngasite.urls')),

兩次顯示一個include,我以為我基本上是將根切換為ngasite.urls等,在兩種情況下,如建議的那樣,這可能是一個問題,我確實刪除了它,並且在沒有反向匹配的情況下仍然失敗了,我認為它更多是一個參數問題? 只是想以此更新問題。

編輯:為應用程序發布urls.py,然后為完整的Django應用程序發布:

from django.conf.urls import url
from . import views

app_name = 'ngasite'
urlpatterns = [
    # ex: /ngasite/
    url(r'^$', views.IndexView.as_view(), name='index'),
    # ex: /ngasite/5/
    url(r'^(?P<pk>[0-9]+)/$', views.DetailView.as_view(), name='detail'),
    # ex: /ngasite/5/results/
    url(r'^(?P<pk>[0-9]+)/results/$', views.ResultsView.as_view(), name='results'),
    # ex: /ngasite/5/vote/
    url(r'^(?P<question_id>[0-9]+)/vote/$', views.vote, name='vote'),

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

完整的應用urls.py:

from django.conf.urls import url
from django.contrib import admin
from django.conf.urls import include
from django.views.generic import TemplateView

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    url(r'^ngasite/', include('ngasite.urls')),
    url(r'^admin/', admin.site.urls),
    url(r'^', include('ngasite.urls')),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

我試圖使用有人在這里發表的精彩文章將文件上傳到基於django的網站:

需要一個最小的Django文件上傳示例

從步驟1到步驟7,一切似乎都運行了,直到我嘗試命中列表URL且list.html模板視圖中出現錯誤:

<form action="{% url 'list' %}" method="post" enctype="multipart/form-data">

它抱怨我相信URL“列表”,但是我不太確定錯誤告訴我什么。 我承認我是django新手,並且在建立基本網站並運行后立即進入了該示例,以為我沒有Django的要旨。

模板文件與前面的示例完全相同,只是更改了正確的appname。

完整輸出Console輸出:

/usr/local/lib/python2.7/site-packages/django/shortcuts.py:45: RemovedInDjango110Warning: The context_instance argument of render_to_string is deprecated.
  using=using)

Internal Server Error: /ngasite/list/
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 149, in get_response
    response = self.process_exception_by_middleware(e, request)
  File "/usr/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 147, in get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/Users/shane.thomas/programming/fadeenv/ngasite/ngasite/views.py", line 77, in list
    context_instance=RequestContext(request)
  File "/usr/local/lib/python2.7/site-packages/django/shortcuts.py", line 45, in render_to_response
    using=using)
  File "/usr/local/lib/python2.7/site-packages/django/template/loader.py", line 114, in render_to_string
    template_name, context, context_instance, dirs, dictionary)
  File "/usr/local/lib/python2.7/site-packages/django/template/engine.py", line 244, in render_to_string
    return t.render(context_instance)
  File "/usr/local/lib/python2.7/site-packages/django/template/base.py", line 206, in render
    return self._render(context)
  File "/usr/local/lib/python2.7/site-packages/django/template/base.py", line 197, in _render
    return self.nodelist.render(context)
  File "/usr/local/lib/python2.7/site-packages/django/template/base.py", line 992, in render
    bit = node.render_annotated(context)
  File "/usr/local/lib/python2.7/site-packages/django/template/base.py", line 959, in render_annotated
    return self.render(context)
  File "/usr/local/lib/python2.7/site-packages/django/template/defaulttags.py", line 513, in render
    six.reraise(*exc_info)
  File "/usr/local/lib/python2.7/site-packages/django/template/defaulttags.py", line 499, in render
    url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app)
  File "/usr/local/lib/python2.7/site-packages/django/core/urlresolvers.py", line 600, in reverse
    return force_text(iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs)))
  File "/usr/local/lib/python2.7/site-packages/django/core/urlresolvers.py", line 508, in _reverse_with_prefix
    (lookup_view_s, args, kwargs, len(patterns), patterns))
NoReverseMatch: Reverse for 'list' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []
[02/May/2016 07:20:26] "GET /ngasite/list/ HTTP/1.1" 500 118169

網頁輸出:

NoReverseMatch at /ngasite/list/
Reverse for 'list' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []
Request Method:
GET
Request URL:
http://localhost:8000/ngasite/list/
Django Version:
1.9.5
Exception Type:
NoReverseMatch
Exception Value:
Reverse for 'list' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []
Exception Location:
/usr/local/lib/python2.7/site-packages/django/core/urlresolvers.py in _reverse_with_prefix, line 508
Python Executable:
/usr/local/opt/python/bin/python2.7
Python Version:
2.7.11
Python Path:
['/Users/shane.thomas/programming/fadeenv/mysite',
 '/Library/Frameworks/SQLite3.framework/Versions/C/Python/2.7',
 '/Library/Frameworks/GEOS.framework/Versions/3/Python/2.7/site-packages',
 '/Library/Frameworks/GDAL.framework/Versions/1.11/Python/2.7/site-packages',
 '/usr/local/lib/python2.7/site-packages/pyproj-1.9.5.1-py2.7-macosx-10.11-x86_64.egg',
 '/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python27.zip',
 '/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7',
 '/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin',
 '/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac',
 '/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages',
 '/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk',
 '/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old',
 '/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload',
 '/usr/local/lib/python2.7/site-packages',
 '/usr/local/lib/python2.7/site-packages/geos',
 '/Library/Python/2.7/site-packages/numpy-override',
 '/Library/Python/2.7/site-packages']
Server time:
Mon, 2 May 2016 07:20:26 -0700
Error during template rendering
In template /Users/shane.thomas/programming/fadeenv/mysite/ngasite/templates/ngasite/list.html, error at line 20
Reverse for 'list' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []
10
        <ul>

11
        {% for document in documents %}

12
            <li><a href="{{ document.docfile.url }}">{{ document.docfile.name }}</a></li>

13
        {% endfor %}

14
        </ul>

15
    {% else %}

16
        <p>No documents.</p>

17
    {% endif %}

18


19
        <!-- Upload form. Note enctype attribute! -->

20
        <form action="{% url 'list' %}" method="post" enctype="multipart/form-data">

21
            {% csrf_token %}

22
            <p>{{ form.non_field_errors }}</p>

F

我在您的項目url.py文件中看到了一些問題

urlpatterns = [
    url(r'^ngasite/', include('ngasite.urls')),
    url(r'^admin/', admin.site.urls),
    url(r'^', include('ngasite.urls')),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

你已經兩次提到過

url(r'^ngasite/', include('ngasite.urls')),

url(r'^', include('ngasite.urls')),

這意味着view.list有兩個網址路徑

1) /list/
2) /ngasite/list/

我想這一定是問題所在。希望有幫助

我正在回答我自己的問題(我討厭這樣做),但是也許它將幫助另一位菜鳥進入Django。 這個問題似乎是一個命名問題,就我而言,我需要:

<form action="{% url 'ngasite:list' %}" method="post" enctype="multipart/form-data">

而不是

<form action="{% url 'list' %}" method="post" enctype="multipart/form-data">

我有

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM