标签: django-generic-views

我可以使用混合来组合基于创建和列表类的通用视图吗?

我正在寻找在功能上将 List 和 Create 与通用类视图相结合的最简单方法。
我想要一个页面,其中包含一个项目列表和一个用于在底部添加新项目的表单。

我认为 mixin 架构将允许组合必要的类,但我还没有运气。

这几乎有效:

class ResourceListView(ListView, BaseCreateView):
    context_object_name = 'resources'
    model = Resource
    form_class = ResourceForm
Run Code Online (Sandbox Code Playgroud)

form不能在模板内部访问,并且在无效输出时崩溃(当表单有效时,这很好)。
这可能与多重继承有关,但我还没有真正进入 Python,所以它变得太混乱了。

有没有一种简单的方法可以将一些mixin 组合成一个视图并创建视图,还是我必须推出自己的视图?

python django django-generic-views django-class-based-views django-1.3

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

使用通用登录视图时"name'django'未定义"错误?

我正在尝试使用django提供的通用登录视图,这是我的urls.py:

url(r'^login/$', django.contrib.auth.views.login),
Run Code Online (Sandbox Code Playgroud)

当我运行服务器并转到

127.0.0.1 
Run Code Online (Sandbox Code Playgroud)

它给了我一个

NameError at /
Run Code Online (Sandbox Code Playgroud)

name 'django' is not defined
Run Code Online (Sandbox Code Playgroud)

当我删除'django'并将其留在

contrib.auth.views.login
Run Code Online (Sandbox Code Playgroud)

它给了一个

NameError at /
Run Code Online (Sandbox Code Playgroud)

name 'contrib' is not defined
Run Code Online (Sandbox Code Playgroud)

任何想法为什么以及如何解决这个问题?

django django-urls django-generic-views nameerror django-login

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

如何从模板中使用django通用视图(CreateView vs UpdateView)进行创建或更新?

我正在为我共享相同的模板CreateViewUpdateView使用django的通用视图.我希望我的模板中的"提交"按钮在我使用时使用"添加"并在我使用时使用CreateView"更新" UpdateView.我的模板中有什么方法可以区分使用哪个视图(CreateViewvs UpdateView)?

我知道我可以使用一个单独的模板template_name_suffix,并将常见的东西放在一个单独的包含或东西中,但只是想看看是否有办法在不创建单独的模板的情况下完成它.

django django-templates django-generic-views

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

将表单集保存在 UpdateView 中

Entry我有以下Meaning具有多对多关系的模型。我需要创建一个更新表单/视图来同时编辑Entry和对象。Meaning我还必须能够在编辑对象时Meaning向对象添加更多对象。Entry我尝试使用UpdateViewandmodelformset_factory如下。

我可以看到表单,但我的视图没有保存更改Meaning。我有两个问题:

  1. 我如何保存Meaning更改?

  2. 如何Meaning在此表单/视图中添加或删除对象?

楷模

class Entry(models.Model):
    title = models.CharField(max_length=70)
    slug = models.SlugField('slug', max_length=100, unique=True)

class Meaning(models.Model):
    title = models.CharField(max_length=70)
    language = models.CharField(max_length=5, choices=LANGUAGE_CHOICES)
    entry = models.ManyToManyField(
        Entry, related_name='meaning', 
        related_query_name='meanings',
        through='MeaningRelation')

class MeaningRelation(models.Model):
    entry = models.ForeignKey(Entry, on_delete=models.CASCADE)
    meaning = models.ForeignKey(Meaning, on_delete=models.CASCADE)
Run Code Online (Sandbox Code Playgroud)

形式

class EntryForm(forms.ModelForm):
    class Meta:
        model = models.Entry
        fields = ['title', 'slug']

MeaningFormSet = modelformset_factory(models.Meaning, fields=('title', 'language'))
Run Code Online (Sandbox Code Playgroud)

看法 …

python django django-forms django-views django-generic-views

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

如何在DRF中获取并显示父序列化器中的所有子对象

我有 3 个不同的序列化器,用于父对象和子对象的 3 个不同视图。意见是CreateAPIView,,ListAPIViewRetrieveAPIView

因此,我CreateAPIView有一个用于创建对象的序列化器,ListAPIView有一个用于列出对象的序列化器,还有RetrieveAPIView一个用于显示对象的详细信息的序列化器。对于子对象和父对象都是如此。

如何列出父对象中与其相关的所有子对象?这意味着RetrieveAPIView我想在父级中展示ListAPIView 其子级。

楷模

class Boards(models.Model):

    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    name = models.CharField(max_length=50, blank=False, null=False, unique=True)
    slug = models.SlugField()

    def __str__(self):
        return self.name

    def save(self, *args, **kwargs):
        self.slug = slugify(self.name)
        super(Boards, self).save(*args, **kwargs)

class Lists(models.Model):

    name = models.CharField(max_length=50, blank=False, null=False, unique=True)
    slug = models.SlugField()
    board = models.ForeignKey(Boards, on_delete=models.CASCADE)

    def __str__(self):
        return self.name

    def save(self, *args, **kwargs):
        self.slug = slugify(self.name)
        super(Lists, …
Run Code Online (Sandbox Code Playgroud)

foreign-keys django-generic-views django-serializer django-rest-framework

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

mixin 和泛型有什么区别?

我正在学习 Django Rest Framework。并且有两个概念在我看来几乎是一样的,并且用于不同的场景。

rest_framework mixins我认为当我们使用视图集时会使用它们。并rest_framework generics与 APIViews 一起使用。

这两个组件有什么区别?

django mixins django-generic-views django-rest-framework

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

如何使用 Djangorestframework 中的 UpdateAPIView 更新模型中的单个字段?

我正在学习通用视图并创建一些 API。如何更新字段:mobile来自型号Contacts

我想从 URL 获取用户 ID (mobile/update/user_id),但是在创建查询集时它不起作用。我想做一些像这里提到的那样的事情:

#queryset = Contacts.objects.filter(id=Usertab.objects.filter(id=self.kwargs['id']).first().contact.id))
Run Code Online (Sandbox Code Playgroud)
class UpdateMobileAPIView(generics.UpdateAPIView):
    queryset = Contacts.objects.filter(pk=Usertab.objects.all())

    serializer_class = ContactsSerializer
    lookup_field = 'pk'

    def update(self,instance,request):
        instance = self.get_object()
        serializer= self.get_serializer(instance,data=request.data,partial=True)
        if serializer.is_valid():
            serializer.save()
            return Response({"message":"mobile number updated successfully"})

        else:
            return Response({"message":"failed"})

Run Code Online (Sandbox Code Playgroud)

这些是模型

class Contacts(models.Model):

    mobile = models.IntegerField(null=False)
    Landline = models.IntegerField(null=False)
    whats_app = models.IntegerField(null=False)


class Usertab(models.Model):

    username = models.CharField(max_length=255,null=False,blank=False)
    address = models.CharField(max_length=255,null=False,blank=False)
    pin_code = models.CharField(max_length=255,null=False,blank=False)
    contact = models.ForeignKey(Contacts,related_name="contacts_user")


class Email(models.Model):

    user = models.ForeignKey(Usertab,related_name="user_email")
    email …
Run Code Online (Sandbox Code Playgroud)

django django-generic-views python-3.x django-serializer django-rest-framework

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

Django Rest Framework - 带有身份验证/权限装饰器的 GenericViewSet

目前我对单个实体有一个简单的休息设置,

您可以创建一个对象,您可以通过 id 检索它。

“POST”需要认证/许可,“RETRIEVE”不需要认证/许可。

settings.py(需要每个资源的全局身份验证/权限):

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'api.authentication.token_authentication.TokenAuthentication'
    ],
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.IsAuthenticated'
    ]
}
Run Code Online (Sandbox Code Playgroud)

在我的资源中,正确应用了全局身份验证/权限设置,但我想为检索方法生成异常:

我的资源.py:

from django.utils.translation import gettext_lazy as _
from rest_framework import mixins, serializers, viewsets
from rest_framework.decorators import authentication_classes, permission_classes

from api.models import Entity


class EntitySerializer(serializers.ModelSerializer):

    class Meta:
        model = Entity
        fields = [...]
        read_only_fields = [...]


class EntityViewSet(
    mixins.CreateModelMixin,
    mixins.RetrieveModelMixin,
    viewsets.GenericViewSet
):

    queryset = Entity.objects.all()
    serializer_class = EntitySerializer

    @permission_classes([]) # this is ignored ?
    @authentication_classes([]) # this is ignored too ?
    def …
Run Code Online (Sandbox Code Playgroud)

authentication django permissions django-generic-views django-rest-framework

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

Django形式前缀与基于类的通用视图

如何在Django 1.3中使用新的基于类的通用视图设置表单前缀关键字?设置前缀可防止呈现的HTML中出现重复的ID.这是记录在这里的形式API.

由于我使用AJAX加载了几种不同的表单,因此我遇到了重复标记的问题.

django django-forms django-generic-views

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

Django中的通用ListView中的多个模板

我有一个对象列表,可以看作是一个单独的页面或另一个页面(虽然ajax).

所以,在我的模板中,我有一个"list_template.html",它只有列表本身,当我在另一个页面中查看列表时使用,以及"full_list_template.html",它扩展了基本模板并使用了"include"标签包含"list_template".

我想使用相同的URL来获取两种情况下的项目列表.我还使用通用ListView来显示对象列表.

几个问题:

1)在两种情况下使用相同的URL是一种好方法吗?

2)如果是,我怎样才能有一个与ListView相关联的URL并根据"请求"更改template_name参数?

django django-templates django-generic-views

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