viewset route restful ordering lookup_field errors detail con auth apiview django url routing url-pattern

route - lookup_field django



En Django, ¿Cómo se escribe el patrón de url para ''/'' y otras urls basadas en raíz? (3)

Soy nuevo en django, y una de las cosas que todavía estoy aprendiendo es url_patterns. Configuré una aplicación de páginas para manejar la ruta raíz (http://www.mysite.com), así como algunas páginas estáticas, como la página sobre. Descubrí cómo configurar el patrón de url para la ruta raíz, pero no puedo hacer que el sitio dirija la ruta ''/ about'' a las páginas "about" view.

Aquí está mi urls.py principal

from django.conf.urls import patterns, include, url from django.conf import settings urlpatterns = patterns('''', url(r''^polls/'', include(''polls.urls'')), url(r''^$'', ''pages.views.root''), url(r''^/'', include(''pages.urls'')), )

Aquí están mis páginas urls.py

from django.conf.urls import patterns, include, url urlpatterns = patterns(''pages.views'', url(r''^about'', ''about''), )

Aquí están mis páginas views.py

# Create your views here. from django.shortcuts import render_to_response from django.template import RequestContext from django.http import HttpResponse, HttpResponseRedirect from django.core.urlresolvers import reverse def root(request): return render_to_response(''pages/root.html'',context_instance=RequestContext(request)) def about(request): return render_to_response(''pages/about.html'',context_instance=RequestContext(request))

Si cambio el archivo urls.py principal para que tenga r''^a/'', include(''pages.urls'') luego la ruta ''/ a / about'' se dirige a la acción acerca de ... así que creo que tiene que ser una problema en la forma en que estoy escribiendo el patrón de url en este archivo. Pero, no puedo averiguar cómo cambiarlo. ¿Alguien puede ayudar?


Descubrí cuál es el problema. El url_pattern apropiado en el nivel del proyecto es:

urlpatterns = patterns('''', url(r''^polls/'', include(''polls.urls'')), url(r''^$'', ''pages.views.root''), url(r'''', include(''pages.urls'')), )

Cuando esto está en su lugar, ''/ about'' y otras rutas simples se dirigen correctamente.

¡Gracias a todos!


Prueba esto, para url.py en el nivel del proyecto:

urlpatterns = patterns('''', # Examples: url(r''^$'', ''apps_name.views.home'', name=''home''), # Uncomment the admin/doc line below to enable admin documentation: # url(r''^admin/doc/'', include(''django.contrib.admindocs.urls'')), # Uncomment the next line to enable the admin: url(r''^admin/'', include(admin.site.urls)), (r''^about/'', include(''about.urls'')), )

y luego el url.py para la aplicación sobre

urlpatterns = patterns('''', url(r''^$'', direct_to_template, {"template": "about/about.html"}, name="about"), )

Tenga en cuenta que las expresiones regulares se evalúan de arriba a abajo, luego, si la ruta se ajusta a la expresión regular, entrará. Para aprender más sobre regexp google o pruebe el gran libro de Zed Shaw sobre regexps


Tenga en cuenta que a partir de la versión 2.0 de Django, el patrón de URL ha cambiado para usar django.urls.path() Ver Ejemplo aquí: link

from django.urls import path from . import views urlpatterns = [ # ex: /polls/ path('''', views.index, name=''index''), # ex: /polls/5/ path(''<int:question_id>/'', views.detail, name=''detail''), # ex: /polls/5/results/ path(''<int:question_id>/results/'', views.results, name=''results''), # ex: /polls/5/vote/ path(''<int:question_id>/vote/'', views.vote, name=''vote''), ]