Wpis z mikrobloga

Robię sobie w Django.

robię template dla strony

moja_strona.pl/XXX/strona/N
Gdzie
· XXX może być różne, ale wszystkie są obsługiwane przez ten sam template
· N jest numerem strony

W urlpatterns mam:

url(r'^XXX1/strona/(?P[1-9]+[0-9]*)/$', X1.as_view())
url(r'^XXX2/strona/(?P[1-9]+[0-9]*)/$', X2.as_view())
url(r'^XXX3/strona/(?P[1-9]+[0-9]*)/$', X3.as_view())
I chcę umieścić na stronie guzik, który będzie zmieniał N na M.
Gdy robię
Jaki mam podać adres, aby to poprawnie działało? Gdyby XXX było stałe to bym wpisał cały adres moja_strona.pl/XXX/strona/M, ale jak to zrobić by XXX mogło być różne, a template działał poprawnie dla wszystkich?
Czy może powinienem zmienić coś w urls?

#django
  • 6
@Romantyczny_widelec: nie ma za co, ja też się dopiero uczę i nie ogarniam jeszcze wszystkiego dobrze, pewnie jest jakieś lepsze rozwiązanie :) możesz pokazać fragment kodu z tej templatki, może trochę rozjaśni i wymyślimy coś lepszego, bo każdy widok przekazuje context z taką samą nazwą zmiennej (czyli XXX) tylko wartość się różni (np. XXX1, XXX2) i wtedy w template jest ta zmienna dla wszystkich widoków
@FiKsUmDyRdUm:
urls.py
template
XXX zamieniłem na poper_url
Używam tutaj Paginatora to dzielenia stron. W Dokumentacji Django o Paginatorze jest taki kawałek, wnioskuję z tego, że może to jest jakiś sposób na podmienienie konkretnej zmiennej w bieżącym adresie url, ale gdy ja to wykorzystuje to "?page=M" zostaje mi dopisane na końcu adresu, a nie o to tu chodzi…
Romantycznywidelec - @FiKsUmDyRdUm: 
urls.py
template
XXX zamieniłem na poperurl
...

źródło: comment_pcgZUTislX8N8HBBkU2cAobgbKNgWPmH.jpg

Pobierz
@Romantyczny_widelec: możesz też stworzyć sobie url w widoku używając funkcji reverse i potem za pomocą contextu wrzucić sobie do template, np.
properurl = reverse('catpage', kwargs={'slug': '...', 'page': '...'} # wcześniej też musiałbyś sprawdzić czy jest następna strona
context['properurl'] = properurl
i w template: