Friday, October 28, 2011

Re: CBV "Router"

Nevermind! Thanks to FunkyBob, I have a solution. I didn't realize you could do this so easily, so I'll share it with others.

# views.py
def my_router(request):
    view = MyCBV.as_view(template_name = 'foo.html')
    return view(request)

Of course, I actually have logic in my function -- but I'm sure you get the point :)

On Fri, Oct 28, 2011 at 7:09 AM, Kurtis <kurtis.mullins@gmail.com> wrote:
Hey Guys,

I'm trying to create a "router" as recommended in IRC for several
different views. My Views are UpdateViews, so they are the new CBVs. I
don't mind my router being a simple function based view, though.

Basically, a User can edit some data. This data changes based upon the
user's "class" ... although when I say that, it's not programmatically
what I mean. A user can have a Band object, OR they can have a
Musician object, or later on there'll be more choices.

I want there to be one URL to edit that data. For example, they could
go to http://www.example.com/edit-profile and based upon what type of
an object the user has, they will be presented a specific ModelView.
So if the user goes to that URL and they are a Musician, they will be
presented my MusicianProfileUpdateView. If they are a Band, they will
be presented my BandProfileUpdatedView. And so forth....

I'm just really not sure what the simplest way to do this is. My views
have quite a bit of custom logic and overrides so in a best case
scenario, I'd be able to do the following:

if Band.objects.filter(user = user).exists():
    return BandProfileUpdateView
elif Musician.objects.filter(user = user).exists():
   return MusicianProfileUpdateView

Currently, I just give them different URLs but I think it's a horrible
approach from a User-experience point of view. I'm open to any
suggestions, and if it's something pretty complex then feel free to
throw in a short snippet example.

Thanks :)

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to django-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/django-users?hl=en.


--
You received this message because you are subscribed to the Google Groups "Django users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to django-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/django-users?hl=en.

No comments:

Post a Comment