1

私のプロジェクトには 2 種類の URL がありdomain.com/firstname.lastnameますdomain.com/user_id

domain.com/13243   ====>  domain.com/peter.norvig    ====>13243 is read from database

これは私の urls.py ファイルのセクションです:

url(r'^(?P<first_name>\w+).(?P<last_name>\w+)(.)?(?P<queueNumber>\d+)?/$',views.nameDetailIndex, name="FLSocial"),


url(r'^(?P<user_id>\d+)/$', views.idDetailIndex, name="IDSocial")

誰かがURLを書いてEnterキーdomain.com/13243を押すと、djangoが自動的user_idにデータベースで見つけfirstnamelastname、URLをdomain.com/peter.norvigにリダイレクトするようにしたい私はプロジェクトでneo4django dbも使用しています

ここに私のviews.pyファイルがあります:

def nameDetailIndex(request, first_name, last_name, queueNumber=None):
    try:
        user = User.objects.filter(firstName=first_name, lastName=last_name)
        if user:
            if not queueNumber:
                if len(user) > 1:
                    user = user[0]
            else:
                #start id counter from 1 not 0 because style of URL :D

                user = user[int(queueNumber)-1]
        else:
            raise Http404
        return render(request, 'social/public.html', {
            'user': user
        })
    except:
        raise Http404


def idDetailIndex(request, user_id):
    user = User.objects.get(id=user_id)
    return render(request, 'social/public.html', {
       'user': user
    })
4

2 に答える 2

0

HttpResponseRedirectテンプレートをレンダリングする代わりに、を返す必要があります。

あなたが見つけた後user

first = user.first_name
last = user.last_name
return HttpResponseRedirect('/%s.%s/', %(first, last))
于 2013-08-12T16:15:42.840 に答える
0

考えられる解決策の 1 つは、Http リダイレクトを使用することです。次に例を示します。

def idDetailIndex(request, user_id):
    user = User.objects.get(id=user_id)
    return redirect('FLSocial', first_name=user.firstName, last_name=user.lastName)
于 2013-08-12T16:14:26.657 に答える