Wpis z mikrobloga

Mirki, jak najlepiej w #django rozwiązać kwestie urli, na których będzie zmieniać się treść ale generalnie base template będzie taki sam? Chodzi mi o to, że będzie ich ponad 50, i nie chcę Tworzyć 50 widoków i pewnie jakoś to mozna mądrzej rozwiązać ale ani w robocie tego nie ruszałem, ani samemu jeszcze nie robiłem czegoś podobnego #python #naukaprogramowania
  • 17
@daczka92: nie chodzi o sam front, wiem jak doklejac front do base template'u i tak to obv bedzie zrobione, nie chciałem robić 50 viewsow i 50 urli, które będą tylko w get'cie renderować template, a w postcie obsługiwać jeden, ten sam formularz(W imię DRY ;p )

@swobodny: ajaxem właśnie nie chciałem tego robić, ostatnio coś z nim robiłem w robocie i coś tam kojarzę ale to rozwiązanie tutaj nie zadziała
@michael93pl: no to na jednym widoku i w tempalte robić bloki {% if cośtam %} gdzie cośtam to jakaś zmienna którą sobie ustawisz w postcie. możesz tak zrobić na jednym template (ja tak rozwiązuje tworzenie np posta i jego edycje, jeżeli w postcie dam że chce edit to form się uzupełnia tym co było i save nadpisuje zmiany)
@daczka92: w poście bym wiediał, clue jest takie, że to nie będą posty ale gety, przepraszam, na szybko może źle opisałem:

home.pl/firma1
homepl/firma2
home.pl/firma3...

Każda podstrona to ściana tekstu pod SEO z pierdołami + formularz, w którym użytkownik może puścić jakiegoś posta.

Chodzi mi o obejście robienia
class firma1():
def get():
render(request, template, context)...

+ tworzenia url'a dla każdego widoku, bo z tego wyjdzie ściana copy pasty praktycnie
@dese: niech Ci wynagrodzą w dzieciach albo alkoholu, jak kto woli ( ͡° ͜ʖ ͡°) zdejmuje to ze mnie potrzebę napieprzania 50 viewsów.

Teraz pytanie, jest możliwość zrobienia dynamicznych urli pod to? Np jakiegoś dict'a, po którym w url bym sprawdzał, czy po slashu jest w moim dictcie, jak tak to przekierować na url, jak nie to wiadomo, 404.
Wiem, że robi się tak z modelami i
@michael93pl: Mireczku, w urls.py coś np. jak:

urlpatterns = patterns('',
url(r'^(?P.+\.html)$', GenericHTMLView.as_view()),
# ...
)

views.py:

class GenericHTMLView(TemplateView):
def get(self, request, page, *args, **kwargs):
self.template_name = page
response = super(GenericHTMLView, self).get(request, *args, **kwargs)
try:
return response.render()
except TemplateDoesNotExist:
raise Http404()

edit: sorry, wypok psuje wcięcia
@dese: jakby ktoś szukał tego:
w regexie można wywalić i html i zostawić url(r'^(?P.+)$'
a w views dodać:
self.template_name = page + '.html'
:)

nie czaję jednak dlaczego to nie działa bez .+ oO
nie czaję jednak dlaczego to nie działa bez .+ oO


@michael93pl: bo nie czaisz jak działają wyrażenia regularne. I z tego co widzę, to nawet nie przeszedłeś tutoriala django z dokumentacji. Zacznij może od tego, zamiast wymyślać koło na nowo...
@m_bielawski: Wiem ogólnie jak działają wyrażenia regularne ale nie pamiętam ich w pełni, kiedy potrzebowałem jakieś stworzyć, to je tworzyłem i tyle. Tutorialu z django nie przechodziłem, poradziłem sobie bez niego.
W którym momencie wymyślam koło na nowo? Mirek podpowiedzial mi fajną opcję na rozwiązanie problemu, zamiast komentować bezsensownie, że to rozwiązanie jest nieefektywne / nie spełnia jakichś wymagań, podaj ku temu argument. Pracuję w zawodzie ale jak wspomniałem, jestem jeszcze