Estoy trabajando en mi proyecto para un curso y estoy totalmente atascado en este momento. Estoy creando un sitio web para vender productos a través de PayPal y las páginas de devolución/cancelación de PayPal no se muestran correctamente. Seguí los ejemplos en mis lecciones y revisé el código cientos de veces, pero obviamente hay algo que me estoy perdiendo.
Recibo un error cuando voy a productos, hago clic en comprar ahora, inicio sesión en PayPal y luego cancelo la compra o compro el producto y vuelvo a la página del comerciante. paypal_return.html y paypal_cancel.html son 2 plantillas guardadas en templates/paypal/
¿Alguien puede ver lo que me estoy perdiendo?
Aquí puedes ver el código completo https://github.com/IreneG5/spss_online
Rastrear
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="stylesheet" href="https://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.Cuando use la etiqueta de URL, debe usar comillas para los literales de cadena, por ejemplo:
{% url 'products' %} Por el momento, el product se trata como una variable y se evalúa como '' en el mensaje de error.
{% url namespace:url_name %} . Entonces, verifique si ha agregado app_name en urls.py.path('<int:question_id>/', views.detail, name='question_detail') mientras que el archivo index.html tenía la siguiente entrada <li><a href="{% url 'polls:detail' question.id %}">{{ question.question_text }}</a></li> . Observe el nombre incorrecto.El error común que he encontrado es cuando te olvidas de definir tu url en yourapp/urls.py
no queremos ninguna sugerencia!! solución por favor..
Arreglar urlpatterns en el archivo urls.py
Por ejemplo, el nombre de mi aplicación es "simulador",
Mi patrón de URL para iniciar y logout login parece a
urlpatterns = [ ... ... url(r'^login/$', simulator.views.login_view, name="login"), url(r'^logout/$', simulator.views.logout_view, name="logout"), ... ... ]En la línea 10 hay un espacio entre s y t . Debería ser una palabra: stylesheet .
Recibí el mismo error al no especificar el nombre de la app antes del nombre del patrón. En mi caso:
app-name : Blog
pattern-name : eliminación posterior
reverse_lazy('Blog:post-delete') funcionó.
Si no define el nombre en el campo de la ruta, generalmente aparecerá el error. por ejemplo: path('crud/',ABC.as_view(),name="crud")
En mi caso, lo que hice fue un error en la etiqueta de url en la plantilla respectiva. Entonces, en mi etiqueta de URL tenía algo como
{% url 'encuestas: detalles' pregunta.id %}
mientras que en las vistas, había escrito algo como:
def detalles (solicitud, question_id): código aquí
Entonces, lo primero que querrá verificar es si las cosas están escritas como deberían. Lo siguiente que puede hacer es lo que han sugerido las personas anteriores.
Dar el mismo nombre en urls.py
path('detail/<int:id>', views.detail, name="detail"),En mi caso, no pongo namespace_name en la etiqueta de URL, por ejemplo: {% url 'url_name or pattern name' %}. tienes que especificar el namespace_name como: {% url 'namespace_name:url_name or pattern name' %}.
Explicación: en el proyecto urls.py path('', include('blog.urls',namespace='blog')), y en el urls.py de la aplicación, debe especificar el nombre de la aplicación. como app_name = 'blog' . namespace_name es el nombre de la aplicación.
Agregue el nombre de la tienda a la plantilla como {% url 'app_name:url_name' %}
App_name = tienda
En urls.py, path('search', views.searched, name="searched"),
<form action="{% url 'store:searched' %}" method="POST">
En mi caso, este error ocurrió debido a que el nombre de la URL mismatched . p.ej,
<form action="{% url 'test-view' %}" method="POST">urls.py
path("test/", views.test, name='test-view'),En mi caso, este error ocurrió porque olvidé agregar app_name junto con url_name . A continuación se muestra mi aplicación urls.py
app_name = "wikis" urlpatterns = [ path("", views.index, name="index"), path("wiki/<str:name>", views.get_page, name="get_page"), ] A continuación se muestra la declaración de devolución de mi función donde olvidé poner app_name en la URL inversa
return HttpResponseRedirect(reverse("get_page", kwargs={'name':title}))El código correcto sería
return HttpResponseRedirect(reverse("wikis:get_page", kwargs={'name':title}))appname=url de demostración=/estudiante
href="{% url 'demostración:estudiante' %}"
Asegúrese de que no debe tener espacio antes o después: (dos puntos)
* Siempre asegúrese de que cuando use HttpResponseRedirect y viceversa, el nombre que especifique dentro de reverse sea el mismo nombre que le dio a su ruta dentro de urls.py
Ese es el problema que tuve y lo descubrí a través de prueba y error*
* Siempre asegúrese de que cuando use HttpResponseRedirect y viceversa, el nombre que especifique dentro de reverse sea el mismo nombre que le dio a su ruta dentro de urls.py
'return HttpResponseRedirect(reverse("index")) path("index/",views.index,name="index")'
Ese es el problema que tuve y lo descubrí a través de prueba y error*
Especifique app_name en el archivo urls.py de una aplicación y use este app_name junto con el nombre de vista literal de cadena de la URL en las plantillas:
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 Nota: use app_name justo encima de url_patterns en el archivo urls.py.
Me he enfrentado al mismo problema. El error fue que declaré el mismo nombre para múltiples patrones de URL.
path('file', views.sender, name='sender'),Aquí el nombre debe ser diferente y único para diferentes URL.
Digamos que en su plantilla home.html tiene un formulario que realiza una solicitud POST, como:
<form id="form_id" action = "{% url 'home' %}" method = "post" > .. </form>En tu urls.py tienes
url(r'^$', views.home_view, name='home')en su opinión, puede verificar los datos pasados de una plantilla como esta.
def home_view(request): print(request.POST)es importante en urls.py declarar un name='home' y en su parte de acción en el formulario para incluir esta url action = "{% url 'home' %}"
Puedes usar uno de estos.
Si no lo hiciste (app_name) Esta es la solución
en urls.py
urlpatterns = [ path('', dashboard.as_view(), name='dashboard'), ]en plantilla.html
<a href="{% url 'dashboard' %}"></a>Si lo hiciste (app_name) Esta es la solución
en urls.py
app_name = 'Blog' urlpatterns = [ path('', dashboard.as_view(), name='dashboard'), ]en plantilla.html
<a href="{% url 'Blog:dashboard' %}"></a>Yo también enfrenté el mismo problema durante la prueba, para mí fue causado cuando la URL estaba vacía en html
<td><a href="{% url '' test.id %}"><i class="fa fa-times" aria-hidden="true"></i></a></td>Entonces, después de que lo cambié poniendo el nombre de la URL:
<td><a href="{% url 'task_delete' test.id %}"><i class="fa fa-times" aria-hidden="true"></i></a></td>También puede obtener este error si olvida agregar la URL de la aplicación en la URL del proyecto
Ejemplo: Proyecto/urls.py
from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('', include('app.urls')), ]y tienes una tienda/urls.py
entonces, si tiene un código html en la tienda/plantillas/tienda y desea agregar en la aplicación/plantillas/aplicación una etiqueta con la URL a un código html en la tienda/plantillas/tienda
Tendrías que incluir el store/urls.py en Project/urls.py
Proyecto/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')), ]