2014-12-05 2 views
8

У меня есть модель Post, которая требует определенной категории перед добавлением в базу данных, и я хочу, чтобы категория была сгенерирована автоматически. Нажав кнопку addPost, вы перейдете на другую страницу, и, таким образом, категория будет определена путем принятия части предыдущего URL-адреса страницы.Django: получение предыдущего url

Есть ли способ получить предыдущий URL-адрес страницы?

Благодаря

Edit: я добавил свою кнопку AddPost здесь.

<aside class="addPost"> 
     <article> 
      <form action="/Forum/addPost"> 
        <input type="submit" name="submit" value="Add Post"/> 
      </form> 
     </article> 
</aside> 

ответ

7

Вы можете получить ссылающаяся URL с помощью request.META.HTTP_REFERER

Подробнее здесь: https://docs.djangoproject.com/en/dev/ref/request-response/#django.http.HttpRequest.META

+0

Извиняюсь, я не совсем понимаю, как это работает. Могли бы вы объяснить? Если бы я смог получить URL-адрес таким образом, разрешил бы я рассматривать его как строку типа? – tryingtolearn

+3

при попытке использовать request.META.HTTP_REFERER Я получаю сообщение об ошибке, говоря, что объект dict не имеет атрибута HTTP_REFERER. – tryingtolearn

1

Гораздо более надежным методом было бы явно передать категорию в URL кнопки Добавить сообщение.

+0

Извините, не могли бы вы уточнить? Я определенно новичок в этом. – tryingtolearn

10

Вы можете сделать это с помощью self.request.META['HTTP_REFERER'], но он будет существовать, если только ваша вкладка была на предыдущей странице с вашего сайта, иначе в META dict не будет HTTP_REFERER. Поэтому будьте осторожны и убедитесь, что вместо этого вы используете нотацию .get().

# Returns None if user came from another website 
referer = self.request.META.get('HTTP_REFERER') 
+0

name 'self' не определен? –

3

Я не могу ответить на комментарий @tryingtolearn, но и для будущих людей, вы можете использовать request.META['HTTP_REFERER']

Смежные вопросы