Django - 更改浏览器中显示的URL

时间:2016-04-12 09:29:37

标签: python django

我正在制作一个简单的代码编辑器。为每个用户分配一个六字符长的id,需要将其附加到URL。因此,如果有人访问localhost:8000/myapp/上的网页,则网址需要更改为localhost:8000/myapp/<token>

我正在使用以下函数生成该令牌密钥 -

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更改但功能保持不变。

2 个答案:

答案 0 :(得分:1)

如果我是对的:

localhost:8000/myapp/撰写视图在此视图中,生成您的令牌,然后将其重定向到视图中的新网址。

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

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

答案 1 :(得分:0)

这是一个两步过程。你需要创建

  • 带有匹配网址的视图,用于检索您的个人令牌
  • 具有匹配名称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}))

...