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''),
]