小编Moh*_*han的帖子

BehaviorSubject firing twice

Im using BehaviourSubject from RxJS:

private rights = new BehaviorSubject<Array<string>>([]);


updateRights(rights: Array<string>) {
  this.rights.next(rights);
}

getRights(): Observable<any> {
  return this.rights.asObservable();
}
Run Code Online (Sandbox Code Playgroud)

I'm updating the rights in the root component and im subscribing to it in another component like:

 this.configService.getRights().subscribe(res => {
   console.log(res);
 })
Run Code Online (Sandbox Code Playgroud)

This subscription is firing twice. Once when the data is empty and then again when the data is received.

I want the subscription to fire only once and get only the latest data. What should be done?

rxjs angular7

6
推荐指数
2
解决办法
3096
查看次数

对象权限函数多次触发

我正在使用 Django Rest 框架。我想为 RetrieveUpdateDestroyAPI View 授予权限类

我的权限类别:

class AssetItemPermission(permissions.BasePermission):
    def has_object_permission(self, request, view, obj):
        user = request.user
        shared_item_course = False

        is_content_author = PermissionHelper().check_permission(
            request.user, ['create_content'])

        courses = Course.objects.filter(module=obj)

        if any(obj.tenant in course.tenants.all() for course in courses):
            shared_item_course = True
        elif any(obj.status==TenantShareItemStatusValues.SHARED_TO_ALL.value for course in courses):
            shared_item_course = True

        if Enrolment.objects.filter(enrollable__in=courses, enrollee=request.user, 
                                    status=EnrolmentStatus(short_name=EnrolmentStatusValues.APPROVED.value)
                                   ).exists():
            print("Is enrolled by user")
            return True
        elif is_content_author and obj.tenant == request.user.tenant:
            print("is content author and it is in tenant")
            return True
        elif is_content_author and shared_item_course: …
Run Code Online (Sandbox Code Playgroud)

python django django-rest-framework

3
推荐指数
1
解决办法
477
查看次数

成功 url 到当前 url

我正在使用基于 Django 类的视图和表单。我希望视图在提交新消息后保持在同一页面上。网址就像

localhost:8000/chat/messages/username/
Run Code Online (Sandbox Code Playgroud)

其中 'username' 是接收消息的用户的用户名

class ThreadView(LoginRequiredMixin, FormMixin, DetailView):
    template_name = 'thread.html'
    form_class = ComposeForm

    def get_queryset(self):
        return Thread.objects.by_user(self.request.user)

    def get_object(self):
        other_username  = self.kwargs.get("username")
        obj, created    = Thread.objects.get_or_new(self.request.user, other_username)
        if obj == None:
            raise Http404
        return obj

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['form'] = self.get_form()
        return context

    def post(self, request, *args, **kwargs):
        if not request.user.is_authenticated:
            return HttpResponseForbidden()
        self.object = self.get_object()
        form = self.get_form()
        if form.is_valid():
            return self.form_valid(form)
        else:
            return self.form_invalid(form)

    def form_valid(self, form):
        thread = self.get_object()
        user …
Run Code Online (Sandbox Code Playgroud)

python django django-forms

1
推荐指数
1
解决办法
3774
查看次数

使用 Signals 在 django 中注册用户后如何创建用户配置文件?

我正在尝试在用户在 django 应用程序中注册后创建用户配置文件。
用户创建工作正常,但它不是管理页面中的配置文件模型。

它没有显示任何错误。

到目前为止,我已经这样做了。

用户/信号.py

from django.db.models.signals import post_save
from django.contrib.auth.models import User
#reciever
from django.dispatch import receiver
from .models import Profile

@receiver(post_save, sender=User)
def create_profile(sender, instance, created, **kwargs):
    if created:
        Profile.objects.create(user=instance)

@receiver(post_save, sender=User)
def save_profile(sender, instance, **kwargs):
    instance.profile.save()
Run Code Online (Sandbox Code Playgroud)

用户/应用程序.py

from django.apps import AppConfig

class UsersConfig(AppConfig):
    name = 'users'
    def ready(self):
        import users.signals
Run Code Online (Sandbox Code Playgroud)

用户/模型.py

from django.db import models
from django.contrib.auth.models import User
# Create your models here.

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    image = models.ImageField(default='default.jpg', upload_to='profile_pic')

    def …
Run Code Online (Sandbox Code Playgroud)

python django signals django-models

1
推荐指数
1
解决办法
2546
查看次数