我正在寻找在功能上将 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
我正在尝试使用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
我正在为我共享相同的模板CreateView并UpdateView使用django的通用视图.我希望我的模板中的"提交"按钮在我使用时使用"添加"并在我使用时使用CreateView"更新" UpdateView.我的模板中有什么方法可以区分使用哪个视图(CreateViewvs UpdateView)?
我知道我可以使用一个单独的模板template_name_suffix,并将常见的东西放在一个单独的包含或东西中,但只是想看看是否有办法在不创建单独的模板的情况下完成它.
Entry我有以下Meaning具有多对多关系的模型。我需要创建一个更新表单/视图来同时编辑Entry和对象。Meaning我还必须能够在编辑对象时Meaning向对象添加更多对象。Entry我尝试使用UpdateViewandmodelformset_factory如下。
我可以看到表单,但我的视图没有保存更改Meaning。我有两个问题:
我如何保存Meaning更改?
如何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 个不同的序列化器,用于父对象和子对象的 3 个不同视图。意见是CreateAPIView,,ListAPIView。RetrieveAPIView
因此,我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
我正在学习 Django Rest Framework。并且有两个概念在我看来几乎是一样的,并且用于不同的场景。
rest_framework mixins我认为当我们使用视图集时会使用它们。并rest_framework generics与 APIViews 一起使用。
这两个组件有什么区别?
我正在学习通用视图并创建一些 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
目前我对单个实体有一个简单的休息设置,
您可以创建一个对象,您可以通过 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
如何在Django 1.3中使用新的基于类的通用视图设置表单前缀关键字?设置前缀可防止呈现的HTML中出现重复的ID.这是记录在这里的形式API.
由于我使用AJAX加载了几种不同的表单,因此我遇到了重复标记的问题.
我有一个对象列表,可以看作是一个单独的页面或另一个页面(虽然ajax).
所以,在我的模板中,我有一个"list_template.html",它只有列表本身,当我在另一个页面中查看列表时使用,以及"full_list_template.html",它扩展了基本模板并使用了"include"标签包含"list_template".
我想使用相同的URL来获取两种情况下的项目列表.我还使用通用ListView来显示对象列表.
几个问题:
1)在两种情况下使用相同的URL是一种好方法吗?
2)如果是,我怎样才能有一个与ListView相关联的URL并根据"请求"更改template_name参数?
django ×9
django-forms ×2
python ×2
django-1.3 ×1
django-login ×1
django-urls ×1
django-views ×1
foreign-keys ×1
mixins ×1
nameerror ×1
permissions ×1
python-3.x ×1