Django - 反向''未找到。 ''不是有效的视图函数或模式名称

时间:2017-08-16 22:36:26

标签: python django paypal render

我正在为我的项目开设一门课程,而且我现在完全陷入了困境。我创建了一个通过paypal销售产品的网站,并且paypal返回/取消页面无法正常呈现。我已经按照课程中的示例进行了检查,并检查了一百次代码,但显然我有些遗漏。

我在购买产品时遇到错误,点击立即购买,登录到PayPal,然后取消购买或购买产品并返回商家页面。 paypal_return.html和paypal_cancel.html是模板/ paypal /

下保存的2个模板

有人能看到我失踪的东西吗?

在这里,您可以看到完整代码https://github.com/IreneG5/spss_online

谢谢!

回溯

Environment:


Request Method: GET
Request URL: http://127.0.0.1:8000/paypal-cancel/

Django Version: 1.11.4
Python Version: 2.7.12
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django_forms_bootstrap',
 'paypal.standard.ipn',
 'home',
 'accounts',
 'paypal_store',
 'products']
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\irene\Documents\Full-Stack-Developer\Stream3\Project\spss_online\templates\base.html, error at line 10
   Reverse for '' not found. '' is not a valid view function or pattern name.   1 : {% load staticfiles %}
   2 : <!DOCTYPE html>
   3 : <html lang="en">
   4 : <head>
   5 :     <meta charset="UTF-8">
   6 :     <title>Buy SPSS Online</title>
   7 :     <meta name="viewport" content="width=device-width, initial-scale=1.0">
   8 :     <meta name="description" content="">
   9 :     <meta name="author" content="">
   10 :     <link rel="s tylesheet" href="h ttps://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.3.7/cerulean/bootstrap.min.css">
   11 :     <link rel="stylesheet" href="{% static 'css/style.css' %}">
   12 : 
   13 : 
   14 : </head>
   15 : <body>
   16 : <div class="container">
   17 :     <div class='container-fluid'>
   18 :         <nav id="menu" class="navbar navbar-inverse">
   19 :             <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar">
   20 :                 <span class="icon-bar"></span>


Traceback:

File "C:\Users\irene\virtualenv\spss_online_env\lib\site-packages\django\core\handlers\exception.py" in inner
  41.             response = get_response(request)

File "C:\Users\irene\virtualenv\spss_online_env\lib\site-packages\django\core\handlers\base.py" in _get_response
  187.                 response = self.process_exception_by_middleware(e, request)

File "C:\Users\irene\virtualenv\spss_online_env\lib\site-packages\django\core\handlers\base.py" in _get_response
  185.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "C:\Users\irene\Documents\Full-Stack-Developer\Stream3\Project\spss_online\paypal_store\views.py" in paypal_cancel
  15.     return render(request, 'paypal/paypal_cancel.html', args)

File "C:\Users\irene\virtualenv\spss_online_env\lib\site-packages\django\shortcuts.py" in render
  30.     content = loader.render_to_string(template_name, context, request, using=using)

File "C:\Users\irene\virtualenv\spss_online_env\lib\site-packages\django\template\loader.py" in render_to_string
  68.     return template.render(context, request)

File "C:\Users\irene\virtualenv\spss_online_env\lib\site-packages\django\template\backends\django.py" in render
  66.             return self.template.render(context)

File "C:\Users\irene\virtualenv\spss_online_env\lib\site-packages\django\template\base.py" in render
  207.                     return self._render(context)

File "C:\Users\irene\virtualenv\spss_online_env\lib\site-packages\django\template\base.py" in _render
  199.         return self.nodelist.render(context)

File "C:\Users\irene\virtualenv\spss_online_env\lib\site-packages\django\template\base.py" in render
  990.                 bit = node.render_annotated(context)

File "C:\Users\irene\virtualenv\spss_online_env\lib\site-packages\django\template\base.py" in render_annotated
  957.             return self.render(context)

File "C:\Users\irene\virtualenv\spss_online_env\lib\site-packages\django\template\loader_tags.py" in render
  177.             return compiled_parent._render(context)

File "C:\Users\irene\virtualenv\spss_online_env\lib\site-packages\django\template\base.py" in _render
  199.         return self.nodelist.render(context)

File "C:\Users\irene\virtualenv\spss_online_env\lib\site-packages\django\template\base.py" in render
  990.                 bit = node.render_annotated(context)

File "C:\Users\irene\virtualenv\spss_online_env\lib\site-packages\django\template\base.py" in render_annotated
  957.             return self.render(context)

File "C:\Users\irene\virtualenv\spss_online_env\lib\site-packages\django\template\loader_tags.py" in render
  72.                 result = block.nodelist.render(context)

File "C:\Users\irene\virtualenv\spss_online_env\lib\site-packages\django\template\base.py" in render
  990.                 bit = node.render_annotated(context)

File "C:\Users\irene\virtualenv\spss_online_env\lib\site-packages\django\template\base.py" in render_annotated
  957.             return self.render(context)

File "C:\Users\irene\virtualenv\spss_online_env\lib\site-packages\django\template\defaulttags.py" in render
  458.             url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app)

File "C:\Users\irene\virtualenv\spss_online_env\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:\Users\irene\virtualenv\spss_online_env\lib\site-packages\django\urls\resolvers.py" in _reverse_with_prefix
  497.         raise NoReverseMatch(msg)

Exception Type: NoReverseMatch at /paypal-cancel/
Exception Value: Reverse for '' not found. '' is not a valid view function or pattern name.

19 个答案:

答案 0 :(得分:33)

使用url标记时,应使用字符串文字的引号,例如:

{% url 'products' %}

目前product被视为变量,并在错误消息中评估为''

答案 1 :(得分:5)

  1. 用于指定url的语法为{% url namespace:url_name %}。因此,请检查是否已在urls.py中添加了app_name
  2. 就我而言,我拼错了url_name。 urls.py具有以下内容path('<int:question_id>/', views.detail, name='question_detail'),而index.html文件具有以下条目<li><a href="{% url 'polls:detail' question.id %}">{{ question.question_text }}</a></li>。注意名称不正确。

答案 2 :(得分:2)

将商店名称添加到模板中,例如{% url 'app_name:url_name' %}

App_name =存储

在urls.py中, path('search', views.searched, name="searched"),

<form action="{% url 'store:searched' %}" method="POST">

答案 3 :(得分:2)

在我的情况下,我做的是相应模板中的url标签中的一个错误。因此,在我的url标签中,我有类似

{%url'polls:details'question.id%}

在查看时,我写了类似的内容:

def详细信息(请求,question_id): 代码在这里

因此,您首先要检查的是事物的拼写是否正确。接下来您可以做的就是上述人员的建议。

答案 4 :(得分:1)

就我而言,我没有将namespace_name放在url标签中,例如:{% url 'url_name or pattern name' %}. 您必须指定namespace_name,例如:{% url 'namespace_name:url_name or pattern name' %}.

说明:在项目 urls.py path('', include('blog.urls',namespace='blog')),和应用程序的 urls.py 中,您必须指定app_name。像app_name = 'blog'。 namespace_name是应用名称。

答案 5 :(得分:1)

在应用的 urls.py 文件中指定 app_name,并在模板中使用此 app_name 和 url 的字符串文字视图名称:

syntax --> {% url 'app_name:urlname' %}

app_name = "demo".   # right above url patterns in app
url_patterns = [
('login/', views.login, name = 'login')
]

<a href="{% url 'demo:login' %}".  # Use this in templatep

注意:在 urls.py 文件中使用 app_name 正上方的 url_patterns

答案 6 :(得分:1)

就我而言,发生此错误是因为我忘记将 app_nameurl_name 一起添加。 下面是我的应用 urls.py

    app_name = "wikis"
    urlpatterns = [
        path("", views.index, name="index"),
        path("wiki/<str:name>", views.get_page, name="get_page"),
       ]

下面是我忘记将 app_name 放在反向 URL 中的函数的返回语句

    return HttpResponseRedirect(reverse("get_page", kwargs={'name':title}))

正确的代码应该是

    return HttpResponseRedirect(reverse("wikis:get_page", kwargs={'name':title}))

答案 7 :(得分:0)

如果您未在path字段中定义名称,通常会出现错误。 例如:path('crud/',ABC.as_view(),name="crud")

答案 8 :(得分:0)

在urls.py中提供相同的名称

 path('detail/<int:id>', views.detail, name="detail"),

答案 9 :(得分:0)

在模式名称之前未指定app名称时,我收到相同的错误。 就我而言:

app-name:博客

pattern-name:删除后

reverse_lazy('Blog:post-delete')有效。

答案 10 :(得分:0)

第10行上的st之间有一个空格。它应该是一个词:stylesheet

答案 11 :(得分:0)

就我而言,此错误是由 mismatched 网址名称引起的。例如,

<form action="{% url 'test-view' %}" method="POST">

urls.py

path("test/", views.test, name='test-view'),

答案 12 :(得分:0)

在urls.py文件中修复urlpatterns

例如,我的应用名称为“模拟器”,

我的loginlogout的网址格式如下

urlpatterns = [
    ...
    ...
    url(r'^login/$', simulator.views.login_view, name="login"),
    url(r'^logout/$', simulator.views.logout_view, name="logout"),
    ...
    ...

]

答案 13 :(得分:0)

*始终确保在使用 HttpResponseRedirect 和 reverse 时,您在 reverse 中指定的名称与您在 urls.py 中为路径指定的名称相同

这就是我遇到的问题,我通过反复试验发现*

答案 14 :(得分:0)

*始终确保在使用 HttpResponseRedirect 和 reverse 时,您在 reverse 中指定的名称与您在 urls.py 中为路径指定的名称相同

'return HttpResponseRedirect(reverse("index")) path("index/",views.index,name="index")'

这就是我遇到的问题,我通过反复试验发现*

答案 15 :(得分:0)

我发现的常见错误是当您忘记定义时 您在yourapp/urls.py

中的网址

答案 16 :(得分:0)

我遇到了同样的问题。错误是我为多个 urlpattern 声明了相同的名称。

 path('file', views.sender, name='sender'),

这里的名称对于不同的 url 应该是不同的和唯一的。

答案 17 :(得分:0)

如果忘记在项目 url 中添加应用 url 也会出现此错误

示例: 项目/urls.py

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('app.urls')),
]

你有一个 store/urls.py

所以如果您在 store/templates/store 中有 html 代码 并且您想在 app/templates/app 中添加一个带有 url 的标签到 store/templates/store

中的 html 代码

您必须在 Project/urls.py

中包含 store/urls.py

项目/urls.py

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('app.urls')),
    path('', include('store.urls')),
]

答案 18 :(得分:-1)

应用名称=演示 url=/学生

href="{% url 'demo:student' %}"

确保前后没有空格:(冒号)