2013-06-05 7 views
5

Sto cercando di capire questa riga: url(r'^(?P<poll_id>\d+)/$', views.detail, name='detail'), da Django's tutorial su come creare viste.Capire l'urlconf di Django

In particolare, non capisco il seguente:?

  • P
  • \ d +
  • name = 'dettaglio'

urls.py

urlpatterns = patterns('', 
    # ex: /polls/ 
    url(r'^$', views.index, name='index'), 
    # ex: /polls/5/ 
    url(r'^(?P<poll_id>\d+)/$', views.detail, name='detail'), 
    # ex: /polls/5/results/ 
    url(r'^(?P<poll_id>\d+)/results/$', views.results, name='results'), 
    # ex: /polls/5/vote/ 
    url(r'^(?P<poll_id>\d+)/vote/$', views.vote, name='vote'), 
) 

risposta

9
  • (?P<poll_id>...) crea un named group; ora puoi fare riferimento a qualsiasi cosa corrisponda a quel gruppo per nome.

    Alla vista verrà passato un parametro di parola chiave con quel nome quando chiamato.

  • \d è un gruppo di caratteri, corrisponde a cifre numeriche (0 fino a 9 per dati ASCII). Il + è un quantificatore; solo 1 o più cifre corrisponderanno.

  • name='detail' denomina lo schema URL in modo da poterlo fare in seguito per nome quando si creano URL inversi. Vedi Naming URL patterns nel manuale di Django.

Tutto sommato, quel modello corrisponde a un URL che inizia con le cifre, seguita da un semplice / barra, causando Django chiamare la vista views.detail, passando le cifre abbinate come parametro poll_id. La parola chiave name rende facile generare un'URL da questo punto di vista:

{% url 'name' poll.id %} 

sarebbe generare un URL per http://yourserver/[digits of poll.id]/.

+0

+1 Risposta molto utile, grazie. – Anthony