1

我在主页本身有我的登录表单,即“/”。现在从那里我想将用户重定向到 0.0.0.0:8000/username ,其中“用户名”不是静态的,不同的用户不同。我是 Django 的初学者。请详细解释。提前致谢

4

1 回答 1

1

你可以做的是像这样在你的 urls.py 中定义一个主页 url 和一个配置文件 url。

#urls.py
url(r'^$', 'app.views.home'),
url(r'^(?P<username>\w+)/$', 'app.views.profile'),

现在在 views.py 下定义 2 个视图,一个用于呈现主页,第二个用于呈现个人资料页面

# views.py

import models
from django.shortcuts import render_to_response
from django.templates import RequestContext
from django.contrib.auth import authenticate, login

def home(request):
    """
    this is the landing page for your application.
    """
    if request.method == 'POST':
        username, password = request.POST['username'], request.POST['password']
        user = authenticate(username=username, password=password)
        if not user is None:
            login(request, user)
            # send a successful login message here
        else:
            # Send an Invalid Username or password message here
    if request.user.is_authenticated():
        # Redirect to profile page
        redirect('/%s/' % request.user.username)
    else:
        # Show the homepage with login form
        return render_to_response('home.html', context_instance=RequestContext(request))


def profile(request, username):
    """
    This view renders a user's profile
    """

    user = user.objects.get(username=username)
    render_to_response('profile.html', { 'user' : user})

现在,当请求第一个 url 时,/它会将请求转发到app.views.home这意味着主视图 ===within===>views.py ===within===>app应用程序。

主视图检查用户是否经过身份验证。如果用户通过身份验证,它会调用 url,/username否则它只会呈现home.html在您的模板目录中调用的模板。

配置文件视图接受 2 个参数,1. 请求和 2. 用户名。现在,当使用上述参数调用配置文件视图时,它会获取提供的用户名的用户实例并将其存储在user变量中,然后将其传递给profile.html模板。

也请阅读Django Project 上非常简单的投票应用教程,以熟悉 django 的强大功能。

:)

于 2012-12-18T09:58:58.003 回答