2012-06-05 2 views
1

나는 무작위 사용자를보기 위해 내 사이트에 "임의"링크가있는 문제에 지금 직면하고 있습니다. 내가 설정 한 방법은 user_id를 얻은 다음 리디렉션을 사용하여 적절한 페이지를 제공하는 것입니다. 내가 겪고있는 문제는 무작위 버튼을 여러 번 클릭하면 다시 클릭하면 "임의"클릭이 발생하기 전에 다시 해당 페이지로 이동한다는 것입니다. 홈페이지, 랜덤 클릭 (/ user1 /로 이동), 랜덤 클릭 (/ user4 /로 이동, 뒤로 이동 (홈 페이지에서 종료)). 이 시나리오에서 나는// 사용자 1에 끝내고 싶습니다뒤로 버튼으로 장고 리디렉션

이 임의보기 방법 :

def Random(request): 
    user = helpers.GetRandomUser() 
    return redirect('user_display', user_slug=user.username) 

템플릿 바로 위의보기로 라우팅됩니다 무작위로 연결되는 링크 /을 /이있다.

편집 : Firefox에서는 예상대로 작동하지만 Chrome에서는 예상대로 작동합니다. Firefox와 비슷한 행동을 모든 곳에서하고 싶습니다.

답변

1

정확하게 이해한다면 동일한 URL (예 : /random_user/)에 대한 링크에서 두 번 클릭하고 임의의 리디렉션으로 응답합니다. 이것은 매우 비 재래 한 것처럼 보입니다. Chrome이 이것을 하나의 기록 항목으로 간주 할 수 있다고 잘못 생각하지는 않습니다.

임의의 브라우저에서 원하는 동작을 달성하려면 임의의 사용자 링크를 렌더링하기 전에 임의의 URL을 생성하기 만하면됩니다.

여러 뷰에서 사용 할 때, write a custom template tag :

@register.simple_tag 
def random_user_url(): 
    user_url = # generate your random user url 
    return user_url 

템플릿에서는 :

{% load your_tag_lib %} 
<a href="{% random_user_url %}">Random user</a> 

이 방법은 모든 클릭은 다른 URL로 브라우저를 이끌고으로 기억됩니다 별도의 기록 입력.

+0

우리는 이런 식으로 생각했지만 SEO에 부정적인 영향을 미칠 것으로 생각하여 사용자 페이지로 리디렉션되는보기로 전달했습니다. –

+0

무언가를 추가하면 무언가를 클릭하면 다른 URL로 리디렉션되지만보기가 사용됩니다. 그래서/random /을 클릭하면/user1/so/user1 /로 리디렉션됩니다. URL에 나타나는 내용입니다. –

+0

또 다른 문제는 추적입니다 - 어떻게 "임의"URL을 클릭했는지 추적 할 수 있습니까? –

0

명확하게하기 위해 당신이 "뒤로 버튼"을 말할 때, 당신은 의미합니까 :

  1. 뒤로 검색 버튼
  2. 뒤로] 버튼

,이 경우에는 귀하 자신의 창조물은 당신이하고있는 클라이언트 쪽을 통해? 자바 스크립트를 통해?

+0

브라우저 뒤로 버튼. –

+0

마지막 사이트 경로를 세션으로 저장 한 다음 페이지가 다시 버튼을 통해 다시 호출 될 때보기를 통해 검색합니다. – magicTuscan

+0

해킹처럼 보이기 때문에 세션을 사용하지 않기 위해 노력하고 있습니다. –

0

다음 코드를 사용하여 브라우저가 페이지를 캐시하지 않도록하십시오. 따라서 뒤로 버튼을 클릭하면 서버에 요청을 보내고 이제이를 잡아 원하는 페이지로 리디렉션 할 수 있습니다.

from django.views.decorators.cache import cache_control 

@cache_control(no_cache=True, must_revalidate=True) 
def func() 
    #some code 
    return 
+0

나는 이것을 추가하려고했지만 아무 것도 바뀌지 않았다. 뒤로 버튼이 원래 페이지로 이동하는 것을보고 있습니다. –

+0

요청은 원래 페이지로 올 것이다.하지만 user_id를 확인하는 요청 미들웨어와 같은 것이 있어야하며,없는 경우 적절한 페이지로 리디렉션해야한다. –

+0

위의 코드는 브라우저에 페이지를 캐시하지 않도록 지시합니다. 따라서 서버에 요청을 보내면 캐시에서 렌더링되지 않습니다. –

관련 문제