python – 部署在郊区的Django应用程序,登录后重定向到主页

python – 部署在郊区的Django应用程序,登录后重定向到主页,第1张

概述我在http://example.com上部署了我的页面.我还在http://example.com/ djangoapp上部署了我的django应用程序. 我正在使用带有此配置的Apache 2.2(/etc/apache2/apache2.conf):WSGIPythonPath / home / brian / djangoprojects / djangoapp. 我还将WSGIScrip 我在http://example.com上部署了我的页面.我还在http://example.com/ djangoapp上部署了我的django应用程序.

我正在使用带有此配置的Apache 2.2(/etc/apache2/apache2.conf):WsgiPythonPath / home / brian / djangoprojects / djangoapp.

我还将WsgiScriptAlias / djangoapp /home/brian/djangoprojects/djangoapp/djangoapp/wsgi.py这一行添加到默认的Apache Virtual Host文件中,它非常好用.

但是,登录后,我的应用程序会将我重定向到http://example.com/而不是http://example.com/djangoapp/homeit.

这是我的urls.py文件:

from django.conf.urls import include,urlfrom django.contrib import adminfrom djangoapp import vIEwsurlpatterns = [    url(r'^admin/',include(admin.site.urls)),url(r'^$','django.contrib.auth.vIEws.login',name="login"),url(r'^logout/$',vIEws.logout_page,name="logout"),url(r'^accounts/login/$',url(r'^register/$',vIEws.register,name="register"),url(r'^register/success/$',vIEws.register_success,name="register_success"),url(r'^homeit/$',vIEws.homeit,name="homeit"),]

这是我的vIEws.py文件:

from django.contrib.auth.decorators import login_requiredfrom django.contrib.auth import logoutfrom django.contrib.auth.models import Userfrom django.vIEws.decorators.csrf import csrf_protectfrom django.shortcuts import render_to_responsefrom django.http import httpResponseRedirectfrom django.template import RequestContextfrom django.core.urlresolvers import reversefrom djangoapp.forms import RegistrationForm@csrf_protectdef 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(reverse('register_success'))    else:        form = RegistrationForm()    variables = RequestContext(request,{        'form': form    })    return render_to_response(        'registration/register.HTML',variables,)def register_success(request):    return render_to_response('registration/success.HTML')def logout_page(request):    logout(request)    return httpResponseRedirect(reverse('login'))@login_requireddef homeit(request):    return render_to_response(('home.HTML',{'user': request.user}))

我的设置文件settings.py:

LOGIN_URL = '/djangoapp/accounts/login/'USE_X_FORWARDED_HOST = TrueSUB_SITE = "/djangoapp"

最后,我用来登录的登录页面:

{% extends "base.HTML" %}{% block Title %}Login{% endblock %}{% block @R_403_6882@ %}Login{% endblock %}{% block content %}    {% if form.errors %}        <p>Your username and password dIDn't match. Please try again.</p>    {% endif %}    <form method="post" action=".">{% csrf_token %}        <table border="0">            <tr><th><label for="ID_username">Username:</label></th><td>{{ form.username }}</td></tr>            <tr><th><label for="ID_password">Password:</label></th><td>{{ form.password }}</td></tr>        </table>        <input type="submit" value="Login" />        <input type="hIDden" name="next" value="{% url "homeit" %}" />    </form>    <a href="{% url "register" %}">Register</a>{% endblock %}
解决方法 快速阅读

解决这个问题的方法:

>在settings.py中添加LOGIN_REDIRECT_URL =’/ djangoapp / homeit’
>将您的urls.py第9行更改为网址(r’^ accounts / login / $’,’django.contrib.auth.vIEws.login’,{‘extra_context’:{‘next’:’/ djangoapp / homeit’} }),

说明

检查django.contrib.auth.vIEws.login目前here的文档

def登录的代码如下:

def login(request,template_name='registration/login.HTML',redirect_fIEld_name=REDIRECT_FIELD_name,authentication_form=AuthenticationForm,current_app=None,extra_context=None):    """    displays the login form and handles the login action.    """    redirect_to = request.POST.get(redirect_fIEld_name,request.GET.get(redirect_fIEld_name,''))    if request.method == "POST":        form = authentication_form(request,data=request.POST)        if form.is_valID():            # Ensure the user-originating redirection url is safe.            if not is_safe_url(url=redirect_to,host=request.get_host()):                redirect_to = resolve_url(settings.LOGIN_REDIRECT_URL)            # Okay,security check complete. Log the user in.            auth_login(request,form.get_user())            return httpResponseRedirect(redirect_to)    else:        form = authentication_form(request)    current_site = get_current_site(request)    context = {        'form': form,redirect_fIEld_name: redirect_to,'site': current_site,'site_name': current_site.name,}    if extra_context is not None:        context.update(extra_context)    if current_app is not None:        request.current_app = current_app    return TemplateResponse(request,template_name,context)

怎么了:

> django.contrib.auth.vIEws.login采用redirect_fIEld_name并相应地重定向>接下来是redirect_fIEld_name的默认值.>目前,由于您没有将任何内容作为下一个参数传递,因此它会自动生成redirect_to =”.> httpResponseRedirect被称为httpResponseRedirect(”)>因此它最终会重定向到您的主页,而不是/ djangoapp.

总结

以上是内存溢出为你收集整理的python – 部署在郊区的Django应用程序,登录后重定向到主页全部内容,希望文章能够帮你解决python – 部署在郊区的Django应用程序,登录后重定向到主页所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1195972.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存