StopIteration exception upon loading form template (url issue)

24 views
Skip to first unread message

Luna Tuna

unread,
Jan 6, 2018, 3:53:41 PM1/6/18
to Django users
My IDE highlights this line:

<form class="edit-form" action="{% url '/mathdata/publish/' %}" method="post">

and it has something to do with the url.  I've tried mathdata:publish as well.  My mathdata/urls.py is:

urlpatterns = [
    path('<int:proof_id>/', views.proof, name='proof'),
    path('content-edit/<str:content_type>/', views.content_edit),
    path('publish/', views.publish, name='publish')
]

So I'm not getting why it doesn't work.

Thank you!

Luna Tuna

unread,
Jan 6, 2018, 3:59:54 PM1/6/18
to Django users
            <form class="edit-form" action="{% url 'publish' %}" method="post">

seems to work.  \ o /

Luna Tuna

unread,
Jan 6, 2018, 4:07:04 PM1/6/18
to Django users
Now getting this:

Forbidden (403)
CSRF verification failed. Request aborted.
Help
Reason given for failure:
CSRF token missing or incorrect.
In general, this can occur when there is a genuine Cross Site Request Forgery, or when Django's CSRF mechanism has not been used correctly. For POST forms, you need to ensure:
  • Your browser is accepting cookies.
  • The view function passes a request to the template's render method.
  • In the template, there is a {% csrf_token %} template tag inside each POST form that targets an internal URL.
  • If you are not using CsrfViewMiddleware, then you must use csrf_protect on any views that use the csrf_token template tag, as well as those that accept the POST data.
  • The form has a valid CSRF token. After logging in in another browser tab or hitting the back button after a login, you may need to reload the page with the form, because the token is rotated after a login.
You're seeing the help section of this page because you have DEBUG = True in your Django settings file. Change that to False, and only the initial error message will be displayed.
You can customize this page using the CSRF_FAILURE_VIEW setting.

Luna Tuna

unread,
Jan 6, 2018, 4:17:39 PM1/6/18
to Django users
Okay, placed {% csrf_token %} in form and

Remember to reload the page!

Now my view function gets called.  

So {% url 'publish' %} is the only format that will work for me.
Reply all
Reply to author
Forward
0 new messages