J'ai un projet django mis en place avec une application appelée pub. J'essaie de le configurer de sorte que je puisse inclure urls.py de chaque application (il y en aura plus comme je vais) dans le urls.py de haut niveau. J'ai aussi un template qui utilise la fonction 'url' pour résoudre une url sur une vue, définie dans le module openidgae. Le problème est que, après l'HTTPRequest est acheminé vers pub.views.index (comme il est censé), je tente de répondre en rendant un modèle qui utilise le modèle fonction « url ». Le code que je montre ci-dessous est également ici: http://gist.github.com/243158fonction url modèle de django ne correspondant pas à l'application
Voici mon urls.py haut niveau:
from django.conf.urls.defaults import *
urlpatterns = patterns('',
(r'', include('openidgae.urls')),
(r'^pub', include('pub.urls')),
)
et pub/urls.py:
from django.conf.urls.defaults import *
urlpatterns = patterns('',
(r'', 'pub.views.index'),
(r'^/$', 'pub.views.index'),
)
et modèles/base .html:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>{% block title %}My amazing site{% endblock %}</title>
</head>
<body>
<div id="header">
{% if lip %}
Welcome {{ lip.pretty_openid }}
<a href="{% url openidgae.views.LogoutSubmit %}">logout</a>
{% else %}
<form id="login-form" action="{% url openidgae.views.OpenIDStartSubmit %}?continue={{continueUrl}}" method="post">
<input type="text" name="openid_identifier" id="openid_identifier" />
<input type="submit" value="Verify" />
</form>
<!-- BEGIN ID SELECTOR -->
<script type="text/javascript" id="__openidselector" src="https://www.idselector.com/selector/46b0e6d0c8ba5c8617f6f5b970865604c9f87da5" charset="utf-8"></script>
<!-- END ID SELECTOR -->
{% endif %}
</div>
{% block content %}{% endblock %}
</body>
</html>
et modèles/pub/index.html:
{% extends "base.html" %}
{% block title %}blahblah!{% endblock %}
{% block content %}
blahblahblah
{% endblock %}
et enfin, pub/views.py:
from django.shortcuts import render_to_response
from django.http import HttpResponse
from django import forms
import openidgae
def index(request):
lip = openidgae.get_current_person(request, HttpResponse())
resp = render_to_response('pub/index.html', {'lip': lip})
return resp
Maintenant, si je mets le deuxième motif dans mon urls.py haut niveau pour pointer directement vers 'pub.views.index', tout fonctionne comme il se doit, mais pas si j'utilise la fonction include.
Des idées? Je suis sûr que le problème a quelque chose à voir avec le URLPATTERN qui tracerait les vues que je suis en train de se résoudre à ne pas être urls disponibles au rendu modèle fonctions lorsque le HttpRequest est géré par l'application de pub plutôt que par le haut niveau , mais je ne comprends pas pourquoi ou comment y remédier.
Oui, je n'ai pas très bien édité ma question. Le problème est ici: '{% url openidgae.views.LogoutSubmit%}'. Je pense que je l'ai corrigé, mais je ne comprends toujours pas comment fonctionnent les URLconfs. Je sais que ce n'est pas si compliqué, mais cela prend du temps quand on se contente de sauter la tête en premier au lieu d'étudier les docs. –