Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django错误:NoReverseMatch_Python_Django - Fatal编程技术网

Python Django错误:NoReverseMatch

Python Django错误:NoReverseMatch,python,django,Python,Django,我正在使用Django 1.10和python 3.4 精确的误差是 NoReverseMatch at /movies/movie/Twilight/ Reverse for 'movie-details' with arguments '(8,)' and keyword arguments '{}' not found. 1 pattern(s) tried: ['movies/movie/(?P<movie_id>\\d+)|(?P<movie_name>[a-z

我正在使用Django 1.10和python 3.4

精确的误差是

NoReverseMatch at /movies/movie/Twilight/
Reverse for 'movie-details' with arguments '(8,)' and keyword arguments '{}' not found. 1 pattern(s) tried: ['movies/movie/(?P<movie_id>\\d+)|(?P<movie_name>[a-zA-Z\\ ]+)/$']
这是指moviesrating/views.py中的函数view\u movie:

url/movies/movie/…的用途。。。如果要显示通过名称或id找到的电影,则特定的url模式来自此需求

关键是错误显示,即使没有找到反向匹配,它也会找到正确的url模式,因此我认为该模式不匹配。然后我尝试将行更改为:

{% url 'moviesrating:movie-details' movie.id %}
{% url 'moviesrating:movie-details' movie_id=movie.id movie_name=None %}
{% url 'moviesrating:movie-details' movie.id None %}
{% url 'moviesrating.views.view_movie' movie.id %}
{% url 'moviesrating.views.view_movie' movie_id=movie.id %}
{% url 'moviesrating.views.view_movie' movie_id=movie.id movie_name=None %}
但没有一个成功

在浏览器中查看链接(例如。http://localhost:8081/movies/movie/8)工作正常,所以不是那个页面导致问题

在这一点上,我真的无法理解这个问题,我已经按照中解释的段落阅读了很多已经提出的问题,但没有一个解决了我的问题

如果有什么不清楚或更多的信息是需要的,请让我知道,我会编辑后。谢谢

以下是错误的完整堆栈跟踪:

Environment:


Request Method: GET
Request URL: http://localhost:8081/movies/movie/Twilight/

Django Version: 1.10.1
Python Version: 3.5.2
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'todolist.apps.TodolistConfig',
 'moviesrating.apps.MoviesratingConfig']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware']


Template error:
In template C:\Users\fra\Programmazione\Python\myserver\moviesrating\templates\moviesrating\select_movie.html, error at line 12
   Reverse for 'movie-details' with arguments '(8,)' and keyword arguments '{}' not found. 1 pattern(s) tried: ['movies/movie/(?P<movie_id>\\d+)|(?P<movie_name>[a-zA-Z\\ ]+)/$']   2 : <html>
   3 : <head>
   4 : <meta charset="ISO-8859-1">
   5 : <title>Choice your movie</title>
   6 : </head>
   7 : <body>
   8 : <h2>Choice of which movie named {{ movies.0.name }} would you see the details</h2>
   9 : 
   10 : <ul>
   11 : {% for movie in movies %}
   12 :     <li> {% url 'moviesrating:movie-details' movie.id %} </li>
   13 :     <li><a href="{{ movie_url }}">{{ movie.name }} del {{ movie.year }} diretto da {{ movie.director }}</a></li>
   14 : {% endfor %}
   15 : </ul>
   16 : </body>
   17 : </html>
   18 : 

Traceback:

File "C:\Users\fra\Programmazione\Python\myserver\moviesrating\views.py" in view_movie
  31.             movie = get_object_or_404(Movie, name = movie_name)

File "C:\Program Files (x86)\Python\lib\site-packages\django\shortcuts.py" in get_object_or_404
  85.         return queryset.get(*args, **kwargs)

File "C:\Program Files (x86)\Python\lib\site-packages\django\db\models\query.py" in get
  389.             (self.model._meta.object_name, num)

During handling of the above exception (get() returned more than one Movie -- it returned 2!), another exception occurred:

File "C:\Program Files (x86)\Python\lib\site-packages\django\core\handlers\exception.py" in inner
  39.             response = get_response(request)

File "C:\Program Files (x86)\Python\lib\site-packages\django\core\handlers\base.py" in _get_response
  187.                 response = self.process_exception_by_middleware(e, request)

File "C:\Program Files (x86)\Python\lib\site-packages\django\core\handlers\base.py" in _get_response
  185.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "C:\Users\fra\Programmazione\Python\myserver\moviesrating\views.py" in view_movie
  34.             return render(request, "moviesrating/select_movie.html", {'movies': movies})

File "C:\Program Files (x86)\Python\lib\site-packages\django\shortcuts.py" in render
  30.     content = loader.render_to_string(template_name, context, request, using=using)

File "C:\Program Files (x86)\Python\lib\site-packages\django\template\loader.py" in render_to_string
  68.     return template.render(context, request)

File "C:\Program Files (x86)\Python\lib\site-packages\django\template\backends\django.py" in render
  66.             return self.template.render(context)

File "C:\Program Files (x86)\Python\lib\site-packages\django\template\base.py" in render
  208.                     return self._render(context)

File "C:\Program Files (x86)\Python\lib\site-packages\django\template\base.py" in _render
  199.         return self.nodelist.render(context)

File "C:\Program Files (x86)\Python\lib\site-packages\django\template\base.py" in render
  994.                 bit = node.render_annotated(context)

File "C:\Program Files (x86)\Python\lib\site-packages\django\template\base.py" in render_annotated
  961.             return self.render(context)

File "C:\Program Files (x86)\Python\lib\site-packages\django\template\defaulttags.py" in render
  209.                     nodelist.append(node.render_annotated(context))

File "C:\Program Files (x86)\Python\lib\site-packages\django\template\base.py" in render_annotated
  961.             return self.render(context)

File "C:\Program Files (x86)\Python\lib\site-packages\django\template\defaulttags.py" in render
  439.             url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app)

File "C:\Program Files (x86)\Python\lib\site-packages\django\urls\base.py" in reverse
  91.     return force_text(iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs)))

File "C:\Program Files (x86)\Python\lib\site-packages\django\urls\resolvers.py" in _reverse_with_prefix
  392.             (lookup_view_s, args, kwargs, len(patterns), patterns)

Exception Type: NoReverseMatch at /movies/movie/Twilight/
Exception Value: Reverse for 'movie-details' with arguments '(8,)' and keyword arguments '{}' not found. 1 pattern(s) tried: ['movies/movie/(?P<movie_id>\\d+)|(?P<movie_name>[a-zA-Z\\ ]+)/$']
环境:
请求方法:获取
请求URL:http://localhost:8081/movies/movie/Twilight/
Django版本:1.10.1
Python版本:3.5.2
已安装的应用程序:
['django.contrib.admin',
“django.contrib.auth”,
“django.contrib.contenttypes”,
“django.contrib.sessions”,
“django.contrib.messages”,
“django.contrib.staticfiles”,
'todolist.apps.TodolistConfig',
'moviesrating.apps.MoviesratingConfig']
已安装的中间件:
['django.middleware.security.SecurityMiddleware',
“django.contrib.sessions.middleware.SessionMiddleware”,
'django.middleware.common.CommonMiddleware',
“django.middleware.csrf.CsrfViewMiddleware”,
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.xframeoptions中间件']
模板错误:
在模板C:\Users\fra\Programmazione\Python\myserver\moviesrating\templates\moviesrating\select_movie.html中,第12行出现错误
找不到参数为“(8,)”且关键字参数为“{}”的“电影详细信息”的反转。尝试了1个模式:[“movies/movie/(?P\\d+)|(?P[a-zA-Z\\]+)/$”]2:
三:
4 : 
5:选择你的电影
6 : 
7 : 
8:选择名为{{movies.0.name}的电影,您会看到详细信息吗
9 : 
10:
    11:{%用于电影中的电影%} 12:
  • {%url'moviesrating:movie details'movie.id%}
  • 13:
  • 14:{%endfor%} 15:
16 : 17 : 18 : 回溯: 视图\电影中的文件“C:\Users\fra\Programmazione\Python\myserver\moviesrating\views.py” 31电影=获取对象或404(电影,名称=电影名称) get\u object\u或\u 404中的文件“C:\Program Files(x86)\Python\lib\site packages\django\shortcuts.py” 85返回queryset.get(*args,**kwargs) get中的文件“C:\ProgramFiles(x86)\Python\lib\site packages\django\db\models\query.py” 389(self.model.\u meta.object\u name,num) 在处理上述异常期间(get()返回了多个电影--它返回了2!),发生了另一个异常: 文件“C:\Program Files(x86)\Python\lib\site packages\django\core\handlers\exception.py”位于内部 39响应=获取响应(请求) 文件“C:\ProgramFiles(x86)\Python\lib\site packages\django\core\handlers\base.py”位于\u get\u响应中 187response=self.process\u异常\u由\u中间件(e,请求) 文件“C:\ProgramFiles(x86)\Python\lib\site packages\django\core\handlers\base.py”位于\u get\u响应中 185响应=包装的回调(请求,*回调参数,**回调参数) 视图\电影中的文件“C:\Users\fra\Programmazione\Python\myserver\moviesrating\views.py” 34返回渲染(请求“moviesrating/select_movie.html”,{'movies':movies}) render中的文件“C:\Program Files(x86)\Python\lib\site packages\django\shortcuts.py” 30content=loader.render_to_string(模板名称、上下文、请求、using=using) render\u to\u字符串中的文件“C:\Program Files(x86)\Python\lib\site packages\django\template\loader.py” 68返回template.render(上下文、请求) render中的文件“C:\Program Files(x86)\Python\lib\site packages\django\template\backends\django.py” 66返回self.template.render(上下文) render中的文件“C:\Program Files(x86)\Python\lib\site packages\django\template\base.py” 208返回self.\u呈现(上下文) 文件“C:\Program Files(x86)\Python\lib\site packages\django\template\base.py”在\u render中 199返回self.nodelist.render(上下文) render中的文件“C:\Program Files(x86)\Python\lib\site packages\django\template\base.py” 994位=节点。带注释的渲染(上下文) render\u注释中的文件“C:\Program Files(x86)\Python\lib\site packages\django\template\base.py” 961返回self.render(上下文) render中的文件“C:\Program Files(x86)\Python\lib\site packages\django\template\defaulttags.py” 209nodelist.append(node.render_注释(上下文)) render\u注释中的文件“C:\Program Files(x86)\Python\lib\site packages\django\template\base.py” 961返回self.render(上下文) render中的文件“C:\Program Files(x86)\Python\lib\site packages\django\template\defaulttags.py” 439url=reverse(视图名称,args=args,kwargs=kwargs,当前应用程序=当前应用程序) 文件“C:\Program Files(x86)\Python\lib\site packages\django\url\base.py”的格式相反 91返回强制_文本(iri_到_uri(解析器._反向_,带有_前缀(视图,前缀,*args,**kwargs))) 文件“C:\Program Files(x86)\Python\lib\site packages\django\url\resolvers.py”位于带前缀的\u reverse\u中 392(查找视图、参数、kwargs、len(模式)、模式) 异常类型:NoReverseMatch at/movies/movie/Twilight/ 异常值:找不到参数为“(8,)”且关键字参数为“{}”的“电影详细信息”的反转。尝试了1个模式:[“movies/movie/(?P\\d+)|(?P[a-zA-Z\\]+)/$”]
Django的
reverse()
{% url 'moviesrating:movie-details' movie.id %}
{% url 'moviesrating:movie-details' movie_id=movie.id movie_name=None %}
{% url 'moviesrating:movie-details' movie.id None %}
{% url 'moviesrating.views.view_movie' movie.id %}
{% url 'moviesrating.views.view_movie' movie_id=movie.id %}
{% url 'moviesrating.views.view_movie' movie_id=movie.id movie_name=None %}
Environment:


Request Method: GET
Request URL: http://localhost:8081/movies/movie/Twilight/

Django Version: 1.10.1
Python Version: 3.5.2
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'todolist.apps.TodolistConfig',
 'moviesrating.apps.MoviesratingConfig']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware']


Template error:
In template C:\Users\fra\Programmazione\Python\myserver\moviesrating\templates\moviesrating\select_movie.html, error at line 12
   Reverse for 'movie-details' with arguments '(8,)' and keyword arguments '{}' not found. 1 pattern(s) tried: ['movies/movie/(?P<movie_id>\\d+)|(?P<movie_name>[a-zA-Z\\ ]+)/$']   2 : <html>
   3 : <head>
   4 : <meta charset="ISO-8859-1">
   5 : <title>Choice your movie</title>
   6 : </head>
   7 : <body>
   8 : <h2>Choice of which movie named {{ movies.0.name }} would you see the details</h2>
   9 : 
   10 : <ul>
   11 : {% for movie in movies %}
   12 :     <li> {% url 'moviesrating:movie-details' movie.id %} </li>
   13 :     <li><a href="{{ movie_url }}">{{ movie.name }} del {{ movie.year }} diretto da {{ movie.director }}</a></li>
   14 : {% endfor %}
   15 : </ul>
   16 : </body>
   17 : </html>
   18 : 

Traceback:

File "C:\Users\fra\Programmazione\Python\myserver\moviesrating\views.py" in view_movie
  31.             movie = get_object_or_404(Movie, name = movie_name)

File "C:\Program Files (x86)\Python\lib\site-packages\django\shortcuts.py" in get_object_or_404
  85.         return queryset.get(*args, **kwargs)

File "C:\Program Files (x86)\Python\lib\site-packages\django\db\models\query.py" in get
  389.             (self.model._meta.object_name, num)

During handling of the above exception (get() returned more than one Movie -- it returned 2!), another exception occurred:

File "C:\Program Files (x86)\Python\lib\site-packages\django\core\handlers\exception.py" in inner
  39.             response = get_response(request)

File "C:\Program Files (x86)\Python\lib\site-packages\django\core\handlers\base.py" in _get_response
  187.                 response = self.process_exception_by_middleware(e, request)

File "C:\Program Files (x86)\Python\lib\site-packages\django\core\handlers\base.py" in _get_response
  185.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "C:\Users\fra\Programmazione\Python\myserver\moviesrating\views.py" in view_movie
  34.             return render(request, "moviesrating/select_movie.html", {'movies': movies})

File "C:\Program Files (x86)\Python\lib\site-packages\django\shortcuts.py" in render
  30.     content = loader.render_to_string(template_name, context, request, using=using)

File "C:\Program Files (x86)\Python\lib\site-packages\django\template\loader.py" in render_to_string
  68.     return template.render(context, request)

File "C:\Program Files (x86)\Python\lib\site-packages\django\template\backends\django.py" in render
  66.             return self.template.render(context)

File "C:\Program Files (x86)\Python\lib\site-packages\django\template\base.py" in render
  208.                     return self._render(context)

File "C:\Program Files (x86)\Python\lib\site-packages\django\template\base.py" in _render
  199.         return self.nodelist.render(context)

File "C:\Program Files (x86)\Python\lib\site-packages\django\template\base.py" in render
  994.                 bit = node.render_annotated(context)

File "C:\Program Files (x86)\Python\lib\site-packages\django\template\base.py" in render_annotated
  961.             return self.render(context)

File "C:\Program Files (x86)\Python\lib\site-packages\django\template\defaulttags.py" in render
  209.                     nodelist.append(node.render_annotated(context))

File "C:\Program Files (x86)\Python\lib\site-packages\django\template\base.py" in render_annotated
  961.             return self.render(context)

File "C:\Program Files (x86)\Python\lib\site-packages\django\template\defaulttags.py" in render
  439.             url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app)

File "C:\Program Files (x86)\Python\lib\site-packages\django\urls\base.py" in reverse
  91.     return force_text(iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs)))

File "C:\Program Files (x86)\Python\lib\site-packages\django\urls\resolvers.py" in _reverse_with_prefix
  392.             (lookup_view_s, args, kwargs, len(patterns), patterns)

Exception Type: NoReverseMatch at /movies/movie/Twilight/
Exception Value: Reverse for 'movie-details' with arguments '(8,)' and keyword arguments '{}' not found. 1 pattern(s) tried: ['movies/movie/(?P<movie_id>\\d+)|(?P<movie_name>[a-zA-Z\\ ]+)/$']
urlpatterns = [
    url(r'^movie/(?P<movie_id>\d+)/$', view_movie, name='movie-details'),
    url(r'^movie/(?P<movie_name>[a-zA-Z\ ]+)/$', view_movie, name='movie-details'),
]
def view_movie(request, movie_id=None, movie_name=None):
    ...
urlpatterns = [
url(r'^movie/(?P<movie_id>[A-z0-9]+)/$', view_movie, name = 'movie-details'),
]
def view_movie(request, movie_id):
     try: 
         int(movie_id)
         movie_name = False
    except:
         movie_name = True

    if not movie_name:
        movie = get_object_or_404(Movie, pk = movie_id)
    elif movie_name:

    # etc.
urlpatterns = [
    url(r'^movie/((?P<movie_id>\d+)|(?P<movie_name>[a-zA-Z\ ]+))/$', view_movie, name = 'movie-details'),
]
def view_movie(request, movie_id=None, movie_name=None):
    if movie_id:
        return HttpResponse('1')
    if movie_name:
        return HttpResponse('2')