首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >找不到'uutiset‘的反向。“‘uutiset”不是有效的视图函数或模式名称

找不到'uutiset‘的反向。“‘uutiset”不是有效的视图函数或模式名称
EN

Stack Overflow用户
提问于 2021-11-02 14:52:03
回答 1查看 27关注 0票数 0

我正在尝试将django项目从django1.4/python2.7更新到django2.2/python3.7。现在,我对python manage.py运行服务器之后的回溯(以及转到页面/uutiset/之后)感到困惑:

代码语言:javascript
运行
复制
Internal Server Error: /uutiset/
Traceback (most recent call last):
  File "C:\Users\miettinj\verkko\venv\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
    response = get_response(request)
  File "C:\Users\miettinj\verkko\venv\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "C:\Users\miettinj\verkko\venv\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\Users\miettinj\verkko\venv\lib\site-packages\django\contrib\auth\decorators.py", line 21, in _wrapped_view
    return view_func(request, *args, **kwargs)
  File "C:\Users\miettinj\osakeekstra\extranet\views.py", line 190, in uutiset
    return render(request, 'hello.html')
  File "C:\Users\miettinj\verkko\venv\lib\site-packages\django\shortcuts.py", line 36, in render
    content = loader.render_to_string(template_name, context, request, using=using)
  File "C:\Users\miettinj\verkko\venv\lib\site-packages\django\template\loader.py", line 62, in render_to_string
    return template.render(context, request)
  File "C:\Users\miettinj\verkko\venv\lib\site-packages\django\template\backends\django.py", line 61, in render
    return self.template.render(context)
  File "C:\Users\miettinj\verkko\venv\lib\site-packages\django\template\base.py", line 171, in render
    return self._render(context)
  File "C:\Users\miettinj\verkko\venv\lib\site-packages\django\template\base.py", line 163, in _render
    return self.nodelist.render(context)
  File "C:\Users\miettinj\verkko\venv\lib\site-packages\django\template\base.py", line 937, in render
    bit = node.render_annotated(context)
  File "C:\Users\miettinj\verkko\venv\lib\site-packages\django\template\base.py", line 904, in render_annotated
    return self.render(context)
  File "C:\Users\miettinj\verkko\venv\lib\site-packages\django\template\defaulttags.py", line 443, in render
    url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app)
  File "C:\Users\miettinj\verkko\venv\lib\site-packages\django\urls\base.py", line 90, in reverse
    return iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs))
  File "C:\Users\miettinj\verkko\venv\lib\site-packages\django\urls\resolvers.py", line 660, in _reverse_with_prefix
    raise NoReverseMatch(msg)
django.urls.exceptions.NoReverseMatch: Reverse for 'uutiset' not found. 'uutiset' is not a valid view function or pattern name.
[03/Nov/2021 14:21:17] "GET /uutiset/ HTTP/1.1" 500 132139

请参阅下面的urls.py、views.py、hello.html和INSTALLED_APPS。

问题一定出在hello.html中。如果我删除这一行

代码语言:javascript
运行
复制
<p><a href="{% url 'extranet:uutiset' %}">Uutiset</a></p>

通过它,我在浏览器页面的url /uutiset/处得到了Hello word,这意味着urls.py应该是正确的,但是html没有将'extranet:uutiset‘理解为一个视图函数。它是使用命令'python manage.py startapp‘创建的普通django应用程序。

urls.py:

代码语言:javascript
运行
复制
from django.conf.urls import url, include
from extranet.views import *

urlpatterns = [
    url(r'^uutiset/', uutiset),
     ]

extranet/views.py:

代码语言:javascript
运行
复制
from django.shortcuts import render        
@login_required    
def uutiset(request):
    return render(request, 'hello.html')

hello.html:

代码语言:javascript
运行
复制
   <html>
     <head>
     </head>
     <body>
       <h1>Hello World<h1>
       <p><a href="{% url 'extranet:uutiset' %}">Uutiset</a></p>
     </body>
    </html>

settings.py

代码语言:javascript
运行
复制
INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',    
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    #'django.contrib.admin',  
    #'extranet.apps.ExtranetConfig',
    'extranet',      
)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-04 09:16:53

更改URL模式,如下所示

代码语言:javascript
运行
复制
url(r'^uutiset/', uutiset, name='uutiset')

因为反向需要命名URL模式,您可以在文档https://docs.djangoproject.com/en/2.2/topics/http/urls/#naming-url-patterns上阅读此内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69812420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档