J'essaie de traiter un formulaire dans Django/Python en utilisant le code suivant.
home.html:
<form action="{% url 'home:submit' %}"method='post'>
views.py:
def submit(request):
a = request.POST(['initial'])
return render(request, 'home/home.html', {
'error_message': "returned"
})
urls.py:
url(r'^submit/$', views.submit, name='submit'),
quand j'essaye de l'exécuter dans un navigateur, j'obtiens l'erreur:
NoReverseMatch at/home/u'home 'n'est pas un espace de noms enregistré et j'obtiens également qu'il y a une erreur dans le formulaire?
Vous devriez juste changer votre URL d'action dans votre template:
<form action="{% url 'submit' %} "method='post'>
Sur la note des espaces de noms url ...
Pour pouvoir appeler des URL en utilisant home
namespace, vous devez avoir dans votre ligne de fichier principale urls.py quelque chose comme:
url(r'^', include('home.urls', namespace='home')),
Dans votre projet principal, ouvrez d'abord url.py. Ensuite, vérifiez que nom_app doit être déclaré en premier. Si ce n'est pas le cas, déclarez-le.
Par exemple, le nom de mon application correspond aux informations utilisateur déclarées dans url.py.
app_name = "userinfo"
urlpatterns = [
url(r'home/', views.home, name='home'),
url(r'register/', views.registration, name='register')
]
Une erreur commune que je trouve toujours, c’est que vous avez un espace de noms dans votre modèle et que, dans YourApp.url, vous n’avez pas d’espace de noms. Si vous devez utiliser des espaces de noms, ajoutez à YourApp.url quelque chose comme ceci app_name = "blog "
puis sur vos temples, assurez-vous d’ajouter votre espace de noms afin que vous obteniez quelque chose comme ceci "les erreurs de supposition viennent de edit.html
"alors sur ce modèle particulier vous le ferez"{% url 'blog:vote' pk=post.pk %}"
"{% url 'blog:post_category' category.name %}"
le nom de la balise doit être unique dans le urls.py
fichier dans votre package d’application dans le projet! il est important que le marquage de gabarit mette en route quoi et où.
maintenant [1] à l'intérieur du urls.py
fichier, vous devez déclarer la variable appName
et lui donner la valeur unique. par exemple appName = "myApp";
dans votre cas myHomeApp et [2] définissent également la liste urlpatterns ...
urlpatterns = [..., url(r'^submit/$', views.submit, name='submit'), ...];
dans le fichier html, remplacez simplement la balise url par:
<form action="{% url 'myHomeApp:submit' %}" method='post'>
cela devrait sifuce ... sinon il suffit d'écrire ici et nous verrons comment continuer
J'ai également fait face au même problème. il est corrigé maintenant en ajoutant
app_name = "<name of your app>" in app/urls.py