I'm not quite sure I understand the point you're objecting to here.  This particular line of code is calling another view (in shoppingcart).  

Do you mean that it should be calling a model function instead?
I have it calling the shopping cart view for code reuse (otherwise it'd have to have all the cases of shoppingcart.views.add_course_to_cart).  Also note that in the student app views functions wrap other views all the time (including this function getting called by try_change_enrollment).

Or do you mean that all the clauses in shoppingcart.views.add_course_to_cart should themselves be in the model?  In that case I don't think the model function should be returning HttpResponse and its relatives, which doesn't seem like right layer to me.