[英]MEDIA_URL and redirect not working
我是django的初學者,所以開始了我的測試項目。
有一個home.html,它提供了注冊或登錄/注銷的選項。 我還創建了一個單獨的應用程序registration
來處理這些請求。
settings.py
MEDIA_ROOT = os.path.join(os.path.dirname(__file__), 'media').replace('\\','/')
MEDIA_URL = 'media/'
urls.py
url(r'^$', direct_to_template, {"template": "home.html",}, name="home"),
url(r'^register/', direct_to_template, {"template": "register.html",}, name="register"),
url(r'^accounts', include('registration.urls')),
base.html
<head>
<link rel="stylesheet" href="{{ MEDIA_URL }}style.css" />
</head><body>
<div style="text-align: right;">
<form action="/accounts/login" method="post">
{% csrf_token %}
<p><span>Username:</span><input type="text" name="username" /></p>
<p><span>Password:</span><input type="password" name="password"/></p>
<p><input class="submit" type="submit" value="Login" /> </p>
</form>
<a href="/accounts/logout">Logout</a>
</div>
<h1>Welcome</h1>
{% if user.is_authenticated %}
<p>Welcome, {{ user.username }}. Thanks for logging in.</p>
{% else %}
<p>Welcome, new user. Please log in.</p>
{% endif %}
{% block content %}
{% endblock %}
home.html
{% extends "base.html" %}
{% block content %}
<p>
This is a test site. If you do not have an account, <a href="/register">Register</a>
</p>
{% endblock %}
register.html
{% extends "base.html" %}
{% block content %}
<h1> Register </h1> <br />
<form action="/accounts" method="post">
{% csrf_token %}
<p><span>Username:</span><input type="text" name="username" /></p><br />
<p><span>Email:</span><input type="text" name="email" /></p><br />
<p><span>Password:</span><input type="password" name="password"/></p><br />
<p><span>Re-password:</span><input type="password" name="repassword"/></p><br />
<p><input class="submit" type="submit" value="Register" /> </p>
</form>
{% endblock %}
urls.py-注冊
url(r'^media/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.MEDIA_ROOT}),
url(r'^$', registerfun),
url(r'/login$', loginfun),
url(r'/logout$', logoutfun),
views.py-注冊
def registerfun(request):
#validate and obtain request parameters
if not errors:
user = User.objects.create_user(username, email, password)
user.save()
return render_to_response('home.html',{'errors':errors}, context_instance=RequestContext(request))
def loginfun(request):
#obtaion request parameters
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
return render_to_response('home.html')
else:
errors.append('Account disabled')
return render_to_response('home.html',{'errors':errors}, context_instance=RequestContext(request))
else:
errors.append('Invalid username/password')
return render_to_response('home.html',{'errors':errors}, context_instance=RequestContext(request))
我面臨2個問題
media/style.css
。 CSRF verification failed. Request aborted.
CSRF verification failed. Request aborted.
錯誤 您如何包含CSS? 它應該是:
{{ MEDIA_URL }}path/to/css.css
在您的情況下:
{{ MEDIA_URL }}style.css
注銷應該是
def logout(request):
auth.logout(request)
return HttpResponseRedirect(reverse('home')) #whatever url you'd like
如果使用django testserver,則應使用serve static視圖,請參閱:
https://docs.djangoproject.com/zh-CN/1.2/howto/static-files/#limiting-use-to-debug-true
CSRF問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.