2 votes

Application Django redirigeant toutes les URL

J'ai créé une application django très simple et ajouté un formulaire (et les vues associées, entrées dans urls.py, etc.), cependant, j'ai remarqué que peu importe l'URL que je mets dans la barre d'adresse, il me redirige toujours vers la page d'accueil.

Voici mon urls.py:

from django.conf.urls import url
from . import views

urlpatterns = [
    url('', views.index, name='index'),
    url('booking/new/', views.booking_new, name='booking_new'),
]

et mon views.py:

from __future__ import unicode_literals
from django.shortcuts import render
from django.http import HttpResponse
from django.template import loader
from .forms import BookingForm

def index(request):
    template = loader.get_template('/home/dave/dave/dave_site/home/templates/home/index.html')
    return HttpResponse(template.render({}, request))

def booking_new(request):
    form = BookingForm()
    return render(request, 'home/booking_edit.html', {'form': form})

J'ai remarqué que lorsque j'essaie d'accéder à /home/booking/new ou /booking/new, cela charge simplement la page d'accueil par défaut que j'ai configurée. Quand je saisis n'importe quelle URL, même une fausse, cela affiche toujours ce site web, et le journal de la console de runserver affiche chaque requête comme étant HTTP 200 successful.

Je ne semble pas avoir configuré une url catchall, donc je ne sais pas pourquoi cela se produit.

Quel est le problème et comment puis-je le résoudre ?

3voto

Mastisa Points 1385

Docs d'URL Django :

Django parcourt chaque modèle d'URL, dans l'ordre, et s'arrête au premier qui correspond à l'URL demandée.

Dans url.py, changez le premier URL en url(r'^$', views.index, name='index')

2voto

Une chaîne vide '' est un motif générique. Vous devriez le rendre plus spécifique.

1voto

Wiriya Rungruang Points 153

C'est parce que cela '' correspond toujours à toutes les URL. Vous devez ajouter une regex ou la déplacer en bas (Mais si elle ne correspond à aucun motif, elle affichera votre page d'index)

urlpatterns = [
    url('^$', views.index, name='index'),
    url('booking/new/', views.booking_new, name='booking_new'),
]

Des documents Django

Django parcourt chaque modèle d'URL, dans l'ordre, et s'arrête au premier qui correspond à l'URL demandée.

Réf : https://docs.djangoproject.com/en/2.1/topics/http/urls/#how-django-processes-a-request

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X