2014-12-05 7 views
8

Mam model Post, który wymaga określonej kategorii przed dodaniem do bazy danych, i chcę, aby kategoria była generowana automatycznie. Kliknięcie przycisku addPost przenosi użytkownika na inną stronę, a więc kategoria zostanie określona poprzez uwzględnienie części adresu URL poprzedniej strony.Django: uzyskiwanie poprzedniego adresu URL

Czy istnieje sposób na uzyskanie adresu URL poprzedniej strony jako ciągu?

Dzięki

Edytuj: Dodałem tutaj mój przycisk AddPost.

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

Odpowiedz

7

można uzyskać odnosząc URL za pomocą request.META.HTTP_REFERER

Więcej informacji tutaj: https://docs.djangoproject.com/en/dev/ref/request-response/#django.http.HttpRequest.META

+0

Przepraszamy, nie nadążam, jak to działa. Czy możesz wytłumaczyć? Gdybym był w stanie pobrać adres URL w ten sposób, to pozwoliłoby mi traktować go jako ciąg znaków? – tryingtolearn

+3

podczas próby użycia request.META.HTTP_REFERER Wystąpił błąd informujący, że obiekt dict nie ma atrybutu HTTP_REFERER. – tryingtolearn

1

Znacznie bardziej wiarygodną metodą byłoby wyraźnie zdać kategorię w adresie URL przycisku Dodaj posta.

+0

Przykro mi, czy mógłbyś to rozwinąć? Jestem zdecydowanie początkującym w tym. – tryingtolearn

10

Możesz to zrobić za pomocą self.request.META['HTTP_REFERER'], ale będzie istnieć, jeśli tylko twoja karta poprzednia strona pochodziła z Twojej witryny, w przeciwnym razie nie będzie HTTP_REFERER w META dict. Bądź więc ostrożny i upewnij się, że zamiast tego używasz notacji .get().

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

nazwa "self" nie jest zdefiniowana? –

3

nie mogę odpowiedzieć @tryingtolearn komentarz, ale dla przyszłych ludzi, można użyć request.META['HTTP_REFERER']