【发布时间】:2016-11-20 14:55:05
【问题描述】:
我不明白我的问题出在哪里。我遇到了一个 url 的问题,但我看不出我在哪里犯了错误。
我有一个项目:Etat_civil
我有一个应用程序:BirthCertificate
我的views.py app 是:
from django.shortcuts import render
from django.http import HttpResponse
from django.template import loader
from BirthCertificate.forms import BirthCertificateForm
# Create your views here.
def BirthCertificateAccueil(request) :
# Fonction permettant de créer la page d'accueil de la rubrique Acte de Naissance
#Cherche le fichier html accueil et le renvois
template = loader.get_template('accueil.html')
return HttpResponse(template.render(request))
def BirthCertificateCreationAccueil(request) :
# Fonction permettant de créer la page de création du formulaire de la partie : Acte de Naissance
template = loader.get_template('creation_accueil.html')
return HttpResponse(template.render(request))
def BirthCertificateForm(request) :
if request.method == 'POST' :
form = BirthCertificateForm(request.POST)
if form.is_valid():
numero_acte = form.cleaned_data["Numero de l'acte"]
nom = form.cleaned_data['Nom']
prenom = form.cleaned_data['Prenom']
else :
form = BirthCertificateForm()
template = loader.get_template('birthform.html')
return render(request, template.render(request),locals())
我还有一个urls.py app:
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^accueil$', views.BirthCertificateAccueil),
url(r'^creation$', views.BirthCertificateCreationAccueil),
url(r'^formulaire$', views.BirthCertificateForm),
]
我的urls.py project 看起来像:
from django.conf.urls import url, include
from django.contrib import admin
from BirthCertificate import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^BirthCertificate/', include('BirthCertificate.urls')),
]
birthform.html 文件如下所示:
{% if envoi %} Votre formulaire est bien complété ! {% endif %}
<form action="{% url "BirthCertificate.views.BirthCertificateForm" %}" method="post">{%
csrf_token %}
{{ form.as_table }}
<input type ="submit" value="Valider" />
</form>
当我启动时:http://localhost:8000/BirthCertificate/formulaire
我收到此错误:
找不到页面 (404) 请求方法:GET 请求
网址:http://localhost:8000/BirthCertificate/formulaire 使用 在 Etat_civil.urls 中定义的 URLconf,Django 尝试了这些 URL 模式, 按此顺序:
^admin/
^BirthCertificate/ ^accueil$
^BirthCertificate/^creation$
当前网址 BirthCertificate/formulaire 不匹配 这些中的任何一个。您看到此错误是因为您有 DEBUG = True 在你的 Django 设置文件中。将其更改为 False,Django 将 显示标准 404 页面。
我被 Django 困住了,我想知道你是否看到错误?
谢谢!
#编辑:
我的forms.py 中有一个错误:我写的是max_lenght 而不是max_length。
但我总是得到一个错误:
TypeError at /BirthCertificate/formulaire
BirthCertificateForm() missing 1 required positional argument: 'request'
Request Method: GET
Request URL: http://localhost:8000/BirthCertificate/formulaire
Django Version: 1.10.3
Exception Type: TypeError
Exception Value:
BirthCertificateForm() missing 1 required positional argument: 'request'
Exception Location: /Users/valentinjungbluth/Desktop/Django/Etat_civil/BirthCertificate/views.py in BirthCertificateForm, line 34
Python Executable: /Library/Frameworks/Python.framework/Versions/3.5/bin/python3
Python Version: 3.5.2
Python Path:
['/Users/valentinjungbluth/Desktop/Django/Etat_civil',
'/Library/Frameworks/Python.framework/Versions/3.5/lib/python35.zip',
'/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5',
'/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/plat-darwin',
'/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/lib-dynload',
'/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages']
Server time: Sun, 20 Nov 2016 16:16:16 +0000
【问题讨论】:
-
你重启服务器了吗?
-
@DanielRoseman 是的,我杀死了端口,再次创建运行服务器,总是出现这个错误。但是,/accueil 和 /creation 很好,所以我不明白。
-
尝试将您的视图
BirthCertificateForm重命名为BirthCertificateView,不确定但可能存在一些名称冲突 -
@devxplorer 我试过但没有效果。总是同样的错误。对我来说奇怪的是它适用于 /accueil 和 /creation 但不适用于 /formulaire。
-
您没有与此匹配的网址:localhost:8000/BirthCertificate/formulaire