def image_like(request): """ :param request: :return: """ image_id = request.POST.get('id') action = request.POST.get('action') print(image_id) print(action) if image_id and action: try: image = Image.objects.get(id=image_id) #多对多字段的管理 #使用add和remove方法用来添加和删除多对多关系 #add方法即使传入已经存在的数据对象,也不会重复建立关系 #remove方法即使传入不存在的数据对象,也不会报错 if action == 'like': image.user_like.add(request.user) create_action(request.user, '喜欢了图片', image) else: image.user_like.remove(request.user) return JsonResponse({'status': 'ok'}) except: pass return JsonResponse({'status': 'error'})
def serial_like(request): """Здесь мы используем два декоратора для функции. Декоратор login_required не даст неавторизованным пользователям доступ к этому обработчику. Деко- ратор require_POST возвращает ошибку HttpResponseNotAllowed (статус ответа 405), если запрос отправлен не методом POST. Таким образом, обработчик будет вы- полняться только при POST-запросах. В Django также реализованы декоратор required_GET, запрещающий любые методы, кроме GET, и декоратор require_http_ methods, принимающий список разрешенных методов в качестве аргумента. В этом обработчике мы используем два POST-параметра: image_id – ID изображения, для которого выполняется действие; action – действие, которое хочет выполнить пользователь (строковое значение like или unlike). Мы используем менеджер отношения «многие ко многим» users_like моде- ли Image, чтобы добавлять и удалять пользователей с помощью методов add() и remove() соответственно. Если вы вызываете add() и передаете в него поль- зователя, который уже связан с текущей картинкой, дубликат не будет создан. Аналогично при вызове remove() и попытке удалить пользователя, который не связан с изображением, ошибка не появится. Еще один полезный метод ме- неджера «многие ко многим» – clear(). Он удаляет все отношения. В конце обработчика используем объект JsonResponse, который возвращает HTTP-ответ с типом application/json и преобразует объекты в JSON.""" serial_id = request.POST.get("id") action = request.POST.get("action") if serial_id and action: try: serial = Serial.objects.get(id=serial_id) if action == "like": serial.users_like.add(request.user) create_action(request.user, "likes", serial) else: serial.users_like.remove(request.user) return JsonResponse({"status": "ok"}) except: pass return JsonResponse({"status": "ok"})
def update(self, request, *args, **kwargs): partial = kwargs.pop('partial', False) instance = self.get_object() serializer = self.get_serializer(instance, data=request.data, partial=partial) serializer.is_valid(raise_exception=True) self.perform_update(serializer) order = instance.order order.status = serializer.get_status(instance) order.save() create_action(request.user, '修改复机', order, limit=False) if getattr(instance, '_prefetched_objects_cache', None): # If 'prefetch_related' has been applied to a queryset, we need to # forcibly invalidate the prefetch cache on the instance. instance._prefetched_objects_cache = {} return Response({ 'id': instance.id, 'order_id': order.id, 'status_code': order.status, 'status': order.get_status_display() })
def post(self, *args, **kwargs): inside = '' collect_block_id = kwargs.get('pk') collect_block_id = int(collect_block_id) block = Block.objects.get(pk=collect_block_id) if collect_block_id: try: collect_block = self.request.user.collect_block except Exception as e: from account.models import UserCollectBlock collect_block = UserCollectBlock.objects.create( user=self.request.user) lst = collect_block.block_list if lst is None: lst = [] if collect_block_id not in lst: lst.append(collect_block_id) self.request.user.collect_block.block_list = lst self.request.user.collect_block.save() inside = 'yes' msg = '已收集' else: lst.remove(collect_block_id) self.request.user.collect_block.block_list = lst self.request.user.collect_block.save() inside = 'no' msg = '从收集中移除' verb = f" {msg} {block._meta.verbose_name} {block}#" create_action(self.request.user, verb, block) return JsonResponse({'state': 'ok', 'inside': inside, 'msg': msg})
def follow(request): user1 = request.user user2 = request.POST.get('username') user2 = User.objects.get(username=user2) # user1.following.add(user2) Contact.objects.get_or_create(user_from=user1, user_to=user2) create_action(user1, 'followed', user2) return redirect('user:user_detail', username=user2)
def unfollow(self, request): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) user_from = request.user user_to = UserModel.objects.get( username=serializer.validated_data['user_to']) Follow.objects.filter(user_from=user_from, user_to=user_to).delete() create_action(user_from, '取消关注', user_to) return Response({'status': 'ok'}, status=status.HTTP_204_NO_CONTENT)
def charge(self, request): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) order = serializer.save() create_action(request.user, '审核', order, limit=False) return Response({ 'id': order.id, 'status_code': order.status, 'status': order.get_status_display() })
def user_follow(request): user_id = request.POST.get('id') action = request.POST.get('action') if user_id and action: user = User.objects.get(id=user_id) if action == 'follow': Content.objects.get_or_create(user_form=request.user,user_to=user) create_action(request.user,'关注了用户',user) else: Content.objects.filter(user_form=request.user,user_to=user).delete() return JsonResponse({'status':'ok'}) return JsonResponse({'status':'error'})
def create(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) user_from = request.user user_to = UserModel.objects.get( username=serializer.validated_data['user_to']) Follow.objects.get_or_create(user_from=user_from, user_to=user_to) create_action(user_from, '关注', user_to) headers = self.get_success_headers(serializer.data) return Response({'status': 'ok'}, status=status.HTTP_201_CREATED, headers=headers)
def user_follow(request): user_id = request.POST.get("id") action = request.POST.get("action") if user_id and action: user = User.objects.get(id=user_id) if action == "follow": Contact.objects.get_or_create(user_from=request.user, user_to=user) create_action(request.user, '关注了用户', user) else: Contact.objects.filter(user_from=request.user, user_to=user).delete() return JsonResponse({"status": "ok"}) return JsonResponse({"status": "error"})
def create(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) order = self.perform_create(serializer) create_action(request.user, '开停机单', order, limit=False) # headers = self.get_success_headers(serializer.data) return Response( { 'id': order.id, 'status_code': order.status, 'status': order.get_status_display() }, status=status.HTTP_201_CREATED)
def register(request): if request.method == 'POST': user_form = UserRegistrationForm(request.POST) if user_form.is_valid(): new_user = user_form.save(commit=False) new_user.set_password(user_form.cleaned_data['password']) new_user.save() Profile.objects.create(user=new_user) create_action(request.user, 'Has created an account') return render(request, 'account/register_done.html', {'new_user': new_user}) else: user_form = UserRegistrationForm() return render(request, 'account/register.html', {'user_form': user_form})
def image_like(request): image_id = request.POST.get('id') action = request.POST.get('action') if image_id and action: try: image = Image.objects.get(id=image_id) if action == 'like': image.users_like.add(request.user) create_action(request.user, 'likes', image) else: image.users_like.remove(request.user) return JsonResponse({'status': 'ok'}) except: pass return JsonResponse({'status': 'ko'})
def register(request): if request.method == 'POST': user_form = UserRegistrationForm(request.POST) if user_form.is_valid(): # 建立新数据对象但是不写入数据库 new_user = user_form.save(commit=False) # 设置密码 new_user.set_password(user_form.cleaned_data['password']) # 保存user对象 new_user.save() Profile.objects.create(user=new_user) create_action(new_user,'创建了新用户') return render(request, 'account/register_done.html', {'new_user': new_user}) else: user_form = UserRegistrationForm() return render(request, 'account/register.html', {'user_form': user_form})
def product(self, request): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) recover_audit = serializer.save() recover_order = recover_audit.recover_order recover_order.order.status = serializer.get_status(recover_audit) recover_order.order.save() create_action(request.user, '审核', recover_order.order, limit=False) return Response( { 'id': recover_order.id, 'order_id': recover_order.order.id, 'status': recover_order.order.get_status_display() }, status=status.HTTP_200_OK)
def image_create(request): if request.method == 'POST': form = ImageCreateForm(data=request.POST, files=request.FILES) if form.is_valid(): cd = form.cleaned_data new_item = form.save(commit=False) new_item.user = request.user new_item.save() create_action(request.user, 'uploaded an image', new_item) return HttpResponse('Image successfully added') else: form = ImageCreateForm(data=request.GET) return render(request, 'images/image/create.html', { 'section': 'images', 'form': form })
def user_follow(request): user_id = request.POST.get('id') action = request.POST.get('action') if user_id and action: try: user = User.objects.get(id=user_id) if action == 'follow': Contact.objects.get_or_create(user_from=request.user, user_to=user) create_action(request.user, 'is following', user) else: Contact.objects.filter(user_from=request.user, user_to=user).delete() return JsonResponse({'status': 'ok'}) except User.DoesNotExist: return JsonResponse({'status': 'ok'}) return JsonResponse({'status': 'ok'})
def image_create(request): if request.method == 'POST': # 表单被提交 form = ImageCreateForm(request.POST) if form.is_valid(): # 表单验证通过 cd = form.cleaned_data new_item = form.save(commit=False) # 把当前用户附加到数据对象上 new_item.user = request.user new_item.save() # 行为流 添加图片动作 create_action(request.user,'添加了图片',new_item) messages.success(request, '图片添加成功') return redirect(new_item.get_absolute_url()) else: form = ImageCreateForm(request.GET) return render(request, 'images/create.html', {'section': 'images', 'form': form})
def image_create(request): if request.method == 'POST': form = ImageCreateForm(data=request.POST) if form.is_valid(): cd = form.cleaned_data new_item = form.save(commit=False) new_item.user = request.user new_item.save() create_action(request.user, 'bookmarked image', new_item) messages.success(request, 'Image added successfully') return redirect(new_item.get_absolute_url()) else: form = ImageCreateForm(data=request.GET) return render(request, 'images/image/create.html', { 'section': 'imges', 'form': form })
def create(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) recover_order = self.perform_create(serializer) order = recover_order.order # status order.status = serializer.get_status(recover_order) order.save() # 这个地方有问题,两分钟内重复操作不记录 create_action(request.user, '申请复机', order, limit=False) headers = self.get_success_headers(serializer.data) return Response( { 'id': recover_order.id, 'order_id': order.id, 'status_code': order.status, 'status': order.get_status_display() }, status=status.HTTP_201_CREATED, headers=headers)