1

ホームページ自体にログインフォーム、つまり「/」があります。そこから、ユーザーを 0.0.0.0:8000/username にリダイレクトしたいのですが、「ユーザー名」は静的ではなく、ユーザーごとに異なります。私はDjangoの初心者です。Plsは部門で説明します。前もって感謝します

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つのビューを定義します。1つはホームページをレンダリングし、もう1つはプロファイルページをレンダリングします。

# 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

プロファイルビューは、1。リクエストと2.ユーザー名の2つの引数を受け入れます。これで、プロファイルビューが上記の引数で呼び出されると、指定されたユーザー名のユーザーインスタンスを取得し、それを変数に格納して、後でテンプレートuserに渡します。profile.html

また、Djangoプロジェクトの非常に簡単な投票アプリケーションチュートリアルを読んで、djangoの力を理解してください。

:)

于 2012-12-18T09:58:58.003 に答える