Ich habe gründlich gesucht und angewendet Code auf die beste meiner aktuellen Fähigkeit behebt, was anderen Menschen ähnliche Probleme gelöst, außer ich bekomme immer noch eine 403 CSRF Fehler, wenn der Benutzer 'Register' auf meiner Registrierung drücken Formular, aber Admin-Login funktioniert. Wenn jemand mich in die richtige Richtung weisen kann, wäre es sehr geschätzt.
Die Dinge, die ich bisher versucht und überprüft habe, ist: die CSRF-Middleware an die Spitze der Middleware-Liste zu stellen, stellen Sie sicher, dass das HTML-Registrierungsformular hat {% csrf_token %}
, stellen Sie sicher, dass die Registeransicht enthält render_to_response
mit RequestContext
, und jetzt bin ich mit einem Verlust von was als nächstes versuchen.
Mein Projekt heißt mysite, mit der App login.
Mit django 1.10.5 und Python 3,5
mysite/urls.py:Django CSRF Fehler bei der Registrierung
from django.conf.urls import url, include
from django.contrib import admin
from login.views import home, logout_page, register_success, register
import django
from django.contrib.auth import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^webapp/', include('webapp.urls')),
#url(r'^', include('personal.urls')),
url(r'^contact/', include('personal.urls')),
url(r'^blog/', include('blog.urls')),
url(r'^$', django.contrib.auth.views.login),
url(r'^home/$', home),
url(r'^register/$', register),
url(r'^register/success/$', register_success),
url(r'^accounts/login/$', django.contrib.auth.views.login),
url(r'^logout/$', logout_page),
]
mysite/settings.py:
INSTALLED_APPS = [
'webapp',
'personal',
'blog',
'login',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
import django.contrib.auth
django.contrib.auth.LOGIN_URL = '/'
MIDDLEWARE = [
'django.middleware.csrf.CsrfViewMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
#'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
Login/views.py:
from django.shortcuts import render
from login.forms import *
from django.contrib.auth.decorators import login_required
from django.contrib.auth import logout
from django.views.decorators.csrf import csrf_protect
from django.shortcuts import render_to_response
from django.http import HttpResponseRedirect
from django.template import RequestContext
@csrf_protect
def register(request):
if request.method == 'POST':
form = RegistrationForm(request.POST)
if form.is_valid():
user = User.objects.create_user(
username=form.cleaned_data['username'],
password=form.cleaned_data['password1'],
email=form.cleaned_data['email']
)
return HttpResponseRedirect('/register/success/')
else:
form = RegistrationForm()
variables = RequestContext(request, {
'form': form
})
return render_to_response(
'registration/register.html',
variables,
)
#return render_to_response("registration/register.html", {'form': form}, RequestContext(request))
def register_success(request):
return render_to_response(
'registration/success.html',
)
def logout_page(request):
logout(request)
return HttpResponseRedirect('/')
@login_required
def home(request):
return render_to_response(
'home.html',
{ 'user': request.user }
)
Login/templates/registration/register.html:
{% extends "personal/header.html" %}
{% block content %}
<h1>User Registration</h1>
<form method="post" action=".">{% csrf_token %}
<table border="0">
{{ form.as_table }}
</table>
<button type="submit" value="Register">Register</button>
<button type="button" onclick="window.location.href='/' ">Login</button>
</form>
{% endblock %}
aktualisieren
Django error: render_to_response() got an unexpected keyword argument 'context_instance'
Die oben gelöst die Problem über mich Ändern der view.py zu:
return render(request,
'registration/register.html', {'form':form},
)
Ihr Code hat nicht funktioniert, aber es hat mir zu diesem Beitrag geholfen danke !! : http://stackoverflow.com/questions/38739422/django-error-render-to-response-got-a-unexpected-keyword-argument-context-i In dem es den Fehler gelöst hat, stellen Sie die Lösung als ein Update auf die Frage – jupiar
@jupiar, ich bin froh, dass es dir geholfen hat, ich aktualisiere meine Antwort :) – Mohsen