Yes; Django says pretty much this same thing "on the tin": "A view function, or *view* for short, is simply a Python function that takes a Web request and returns a Web response." ( https://docs.djangoproject.com/en/dev/topics/http/views/ )
(I think there *is* magic in Django; but its in the inherent clear design and usage patterns that "just work".) On Thursday, 16 July 2015 09:55:10 UTC+2, Mathew Byrne wrote: > > Thanks, yes this is *exactly* what I'm after. > > I'm coming from other web frameworks where there is more "magic" around > controllers/views so I was unsure about this solution, but in django it > appears that a view is explicity just a function that transforms a request > into a response. > > Thanks again. > > On Wednesday, July 15, 2015 at 1:23:16 AM UTC+10, ke1g wrote: >> >> You will want a routing view, or a fallback cascade. In either case, >> make that urlpattern r'^([\w-]+)$'. You don't need to escape the - because >> it's the last char in the class. You don want to restrict the urls to >> those in which the entire url matches (^ and $), and the parentheses >> capture the string as a positional argument to the view. Your view could >> then call sub views, something like this: >> >> def router(request, key): >> try: >> return model1_view(request, key) >> except django.http.Http404: >> pass >> and as many more try blocks as you need. >> >> Don't put the last sub view in a try lock so that if it's not found >> anywhere, the 404 takes its natural course. >> >> Each view can use the get_object_or_404() shortcut, or whatever floats >> your boat. It's just that they should raise Http404, rather than >> formatting the 404 response themselves and returning it >> >> The sub views can be class based, so long as they raise Http404 for no >> such key, or be function views >> >> Doing the outer, routing view, as a class based view is probably less >> clear (less explicit), and is left as an exercise for the student, if you >> really want it. >> >> On Tue, Jul 14, 2015 at 9:26 AM, Avraham Serour <[email protected]> wrote: >> >>> What do you mean by flat URL structure? >>> >>> In any case you may have a controller called by the URL dispatcher that >>> decides which view to use to process the request. >>> >>> No need to complicate on writing you own dispatcher replacement >>> >>> On Tue, Jul 14, 2015, 4:20 PM Mathew Byrne <[email protected]> >>> wrote: >>> >>>> I have an application that requires a flat URL structure for multiple >>>> different views. The single route r"^[\w\-]+" should start by looking at >>>> slugs for one Model class, and move onto a Category Model class if no >>>> match >>>> is found, then a Vendor model class, and lastly down to the flatpages app. >>>> >>>> I'd like to separate all these models into separate views, but regular >>>> django urlpatterns wont work here since only the first match is followed. >>>> >>>> What's the best way to implement this requirement? Is there a way I >>>> can create my own URL matcher and dispatch to a view based on custom >>>> logic? Is there a way to re-dispatch a request after the point at which a >>>> match was made? >>>> >>>> Thanks, >>>> >>>> Mat >>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "Django users" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to [email protected]. >>>> To post to this group, send email to [email protected]. >>>> Visit this group at http://groups.google.com/group/django-users. >>>> To view this discussion on the web visit >>>> https://groups.google.com/d/msgid/django-users/4124aceb-0572-4ee9-ad11-63eb71f71c01%40googlegroups.com >>>> >>>> <https://groups.google.com/d/msgid/django-users/4124aceb-0572-4ee9-ad11-63eb71f71c01%40googlegroups.com?utm_medium=email&utm_source=footer> >>>> . >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Django users" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> To post to this group, send email to [email protected]. >>> Visit this group at http://groups.google.com/group/django-users. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/django-users/CAFWa6tKunbukyag%3DNkO%3D-E2c61vQErnRqjSgXjnuvO4h1MNgWA%40mail.gmail.com >>> >>> <https://groups.google.com/d/msgid/django-users/CAFWa6tKunbukyag%3DNkO%3D-E2c61vQErnRqjSgXjnuvO4h1MNgWA%40mail.gmail.com?utm_medium=email&utm_source=footer> >>> . >>> >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/70cb4021-44e0-445e-9baa-ecc35c3ae499%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.

