2016-04-12 5 views
0

私は簡単なコードエディタを作っています。各ユーザーには、6文字の長いIDが割り当てられます。このIDはURLに追加する必要があります。したがって、一部のユーザーがlocalhost:8000/myapp/のページにアクセスする場合は、URLをlocalhost:8000/myapp/<token>に変更する必要があります。Django - ブラウザで表示されるURLを変更してください

私はそのトークンキーを生成するには、以下の機能を使用しています -

def id_generator(self,size=6, chars=string.ascii_lowercase + string.digits): 
     return ''.join(random.choice(chars) for _ in range(size)) 

を私はミドルウェアを作成しているが、私はさらに進行するかどうかは混乱しています。 process_request()またはprocess_response()は何を使用すべきですか?

どのようにそれらを定義すると、URLは変わりますが、機能は変わりません。

答えて

1

私は右だ場合:

は、あなたのトークンを生成して、ビューから新しいURLにリダイレクトこのビューではlocalhost:8000/myapp/のビューを作成します。

def mytoken(request): 
    token = '0-wedfbdhfgm' 

    return redirect(localhost:8000/myapp/token='+token) 
0

これは2段階のプロセスです。あなたは

ユーザーに結果を提供するために、マッチングという名前のURLでビュー

  • あなたの個々のトークンを取得するために、一致するURLを

    • ビューを作成する必要がurls.py

      ... 
      
      url(r'^myapp/(?P<token>\w+)/$', views.your_user_result_view, name='your-user-result-view'), 
      url(r'^myapp/$', views.your_token_appender_view, name='your-token-appender-view'), 
      
      ... 
      

      views.py

      ... 
      
      def your_user_result_view(request): 
          ... 
      
      def your_token_appender_view(request): 
          token = ... 
      
          redirect(reverse('your-user-result-view',kwargs={'token':token})) 
      
      ...