我正在尝试将我的观点转换为基于课程的观点用于学术目的,但我不知道从哪里开始,
这是我的观点
def friends(request):
if request.user.is_authenticated():
form1 = FriendsForm(request.POST)
form2 = request.POST.get('delete1',False)
if form1.is_valid():
form1 = form1.save(commit=False)
form1.creator = request.user
form1.save()
send_mail('Confirmation email',
# this is a link you wanted to
"http://127.0.0.1:8000%s Please accept the request" % reverse('user_confirm',kwargs={'key': form1.key}),
request.user.email, [form1.friend.email])
if form2:
user1 = User.objects.filter(username = form2)
form3 = Friendship.objects.filter(friend = user1,creator=request.user)
form3.delete()
return render(request, 'mtweet/friends.html', {'FriendsForm':form1,'DeleteFriendForm':form2})
else:
return HttpResponseRedirect(reverse('log-page'))
任何帮助将不胜感激
答案 0 :(得分:0)
也许这可行(尚未测试):
from django.views.generic.edit import FormView ##### Import the FormView a Class Based View
基于类的视图:
class Friends(FormView):
template_name = 'mtweet/friends.html'
form_class = FriendsForm
success_url = '/myurl/'
def post(self, request, *args, **kwargs):
self.req = request
form2 = self.req.POST.get('delete1',False)
if form2:
user1 = User.objects.filter(username = form2)
form3 = Friendship.objects.filter(friend = user1,creator=request.user)
form3.delete()
return super(Friends, self).post(request, *args,**kwargs)
def form_valid(self, form):
form = form.save(commit=False)
form1.creator = self.request.user
form1.save()
## send_mail
return super(Friends, self).form_valid(form)
def get_context_data(self, **kwargs)
context = super(Friends, self).get_context_data(**kwargs)
context['DeleteFriendForm'] = self.form2
return context
您有四种方法可以执行request.user.is_authenticated
:
1:
from django.contrib.auth.decorators import login_required ##### import login required
class LoginRequiredMixin(object):
@classmethod
def as_view(cls):
return login_required(super(LoginRequiredMixin, cls).as_view())
2:
from django.contrib.auth.decorators import login_required ##### import login required
from django.utils.decorators import method_decorator ## Import method decorator
class LoginRequiredMixin(object):
@method_decorator(login_required)
def dispatch(self, request, *args, **kwargs):
return super(self.__class__, self).dispatch(request, *args, **kwargs)
在最后两项中,您必须将LoginRequiredMixin
传递给Friends Class
:
class Friends(LoginRequiredMixin, FormView):
###### CODE ##########
在get
方法中:
您必须将get方法添加到Friends Class
def get(self, request, *args, **kwargs):
if not request.user.is_authenticated():
return HttpResponseRedirect(reverse('log-page'))
您的网址必须是
之类的内容url(r'^friends/$', Friends.as_view(), name='friends')
4方式是在网址:
url(r'^friends/$', login_required(Friends.as_view()), name='friends')
如果您需要帮助,请希望这有助于您。