2016-10-22 52 views
0

林。我希望登录重定向到另一页并传递变量。 香港专业教育学院做了我的意见,但我把所有的时间误差404我读到“登录重定向的URL”,并默认为帐户/个人资料。我在我的模板里创建了一个文件夹。这是正确的方法吗?我把它储存在Django/MYAPP/MYAPP /模板/帐号/资料/ home.html的登录后重定向到使用Django 1.10嵌入式认证另一页

错误: “当前的URL,应收/型材/ home.html的,没有找到相关的这些。”

views.py 

    def home(request): 
     username = None 
     if request.user.is_authenticated: 
      username = request.user.username 
      return redirect('accounts/profile/home.html',{'username': username}) 
     else: 
      return redirect('/accounts/profile') 


myapp/ulrs.py 

    url(r'^accounts/profile/$', views.home, name='home') 

我改变settings.py

LOGIN_REDIRECT_URL = '/' 

任何建议将welcome.If IM这样做不对,请给我一个例子。

谢谢。

回答

0

ü不需要通过用户名在呈现请求。 下面是一个例子:

view.py

def profile(request): 
    username = None 
    if request.user.is_staff: 
     return redirect('/admin/') 
    else: 
     return render(request, 'accounts/profile/home.html',{}) 

home.html的(存储它的myapp/MyApp的/模板/ MyApp的/ home.html做为)

Hello user:{{request.user.username}} 
0

你可能想使accounts/profile/home.html模板与{'username': username}的上下文。

return render(request, 'accounts/profile/home.html', context={'username': username}) 
+0

嗨感谢您的帮助 我试过了,但仍然有错误404。我应该在哪里保存tamplate home ?. 感谢 – OverHeat

1

Dariusz Niespodziany的答案是有效的,但更好的办法是更改您的模板。您认为会是这样的:

def home(request): 
     return redirect('/accounts/profile') 

然后在你的模板(home.html的),你可以做这样的东西:

{% if request.user.is_authenticated %} 
    <h1> Hi {{request.user.username}} </h1> 
{% else %} 
    <h1> Hi stranger </h1> 
{% endif %} 
+0

我用尽u能告诉我PLZ我应该在哪里保存我的家。 HTML 我编辑的设置 – OverHeat

+0

你home.html的应该是在文件夹'templates'内的应用程序。如果它不在,请创建它。 – 1GDST

0

尝试: -

def user_login(request): 
    context = RequestContext(request) 
    if request.method == 'POST': 
     username = request.POST['login'] 
     password = request.POST['password'] 
     user = authenticate (email=username, password=password) 
     if user is not None: 
      if user.is_active: 
       login(request, user, backend='django.contrib.auth.backends.ModelBackend') 
       redirect_to = settings.LOGIN_REDIRECT_URL 
       return redirect(redirect_to,{your varible })