标签: django-class-based-views

Django中的Kwargs和基于类的视图

我搜索了SO和Django文档,似乎无法找到它.我正在扩展django.contrib.comments应用程序的基本功能,以使用我的webapp中的自定义权限系统.对于审核操作,我尝试使用基于类的视图来处理对注释和权限检查的基本查询. (在此上下文中的"EComment"是我的"增强评论",继承自基础django评论模型.)

我遇到的问题comment_id是从urls.py中的URL传入的kwarg.如何从基于类的视图中正确检索?

现在,Django正在抛出错误TypeError: ModRestore() takes exactly 1 argument (0 given).代码包括在下面.

urls.py

url(r'restore/(?P<comment_id>.+)/$', ModRestore(), name='ecomments_restore'),
Run Code Online (Sandbox Code Playgroud)

views.py

def ECommentModerationApiView(object):

    def comment_action(self, request, comment):
        """
        Called when the comment is present and the user is allowed to moderate.
        """
        raise NotImplementedError

    def __call__(self, request, comment_id):
        c = get_object_or_404(EComment, id=comment_id)
        if c.can_moderate(request.user):
            comment_action(request, c)
            return HttpResponse()
        else:
            raise PermissionDenied

def ModRestore(ECommentModerationApiView):
    def comment_action(self, request, comment):
        comment.is_removed = False
        comment.save()
Run Code Online (Sandbox Code Playgroud)

django django-views django-class-based-views

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

Django示例DeleteView

可能重复:
Django基于类的DeleteView示例

下班后搜索我只是不知道如何使用DeleteView.抱歉我的傻瓜?有人可以举个例子吗?

url( r'^del/$', DeleteFormView.as_view( ) ),

class DeleteFormView( BaseDeleteView ):
    model = user_info
    context_object_name = "user_info_list"
Run Code Online (Sandbox Code Playgroud)

必须使用对象pk或slug调用DeleteFormView
这个错误总是存在什么是错误的?

django django-forms django-class-based-views

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

如何将参数传递给django通用视图

我想将一个数字传递给我的通用视图(DetailView)来获取一个对象这是我的代码

URLPATTERN

(r'^newreportview/(?P<number>\w+)/$', NewReportView.as_view()),  
Run Code Online (Sandbox Code Playgroud)

查看课程

class NewReportView(DetailView):
    template_name = "report/newreportview.html"
    context_object_name = "newreportview"
    def get_queryset(self):
        task= get_object_or_404(MyTask,applicationnnumber=self.args[0])
        return task
Run Code Online (Sandbox Code Playgroud)

我猜这一行有些不对劲

name = get_object_or_404(MyTask,applicationnnumber=self.args[0])
Run Code Online (Sandbox Code Playgroud)

错误信息:

Exception Type: IndexError
Exception Value:
tuple index out of range
Run Code Online (Sandbox Code Playgroud)

我应该如何将'number'传递给这个通用视图并获取带有这个'number'的Mytask对象?

谢谢

django django-views django-class-based-views

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

基于django类的视图在POST时返回空字符串

示范:

from django.views.generic.base import View
from django.views.decorators.csrf import csrf_exempt
from django.utils.decorators import method_decorator

class TestView(View):
    @method_decorator(csrf_exempt)
    def dispatch(self, request, *args, **kwargs):
        return HttpResponse('haha')
Run Code Online (Sandbox Code Playgroud)

urls.py是

url(r'^test/', TestView.as_view()),
Run Code Online (Sandbox Code Playgroud)

所以当GET你可以看到haha,但在POST时你会得到一个空白页...

我在这里错过了什么?

编辑:澄清我在做什么.我正在编写一个JSON流CURD视图,我需要以各种方式解析JSON.其中之一是当ppl POST数据具有某种模式时,视图将调度到视图内的另一个方法并返回一些东西.但结果却没有回报.所以我告诉你最小的PoC.请帮我解决我的代码错误.TIA!

顺便说一下可能的相关问题

python django post django-views django-class-based-views

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

为什么Django DetailView没有可用的kwargs

为什么我不能在DetailView中访问从url字符串传递的kwargs ['party_id']?

Test url: http://127.0.0.1:8000/party/3/activity/2/
Run Code Online (Sandbox Code Playgroud)

urls.py

url(r'^party/(?P<party_id>\d*)/activity/(?P<pk>\d*)/$', ActivityView.as_view(), name='activity')
Run Code Online (Sandbox Code Playgroud)

views.py

class ActivityView(DetailView):
    template_name = "ooe/activity_results.html"
    context_object_name = "activity"
    model = Activity

    def get_context_data(self, **kwargs):
        context = super(ActivityView, self).get_context_data(**kwargs)
        #this line is not working because kwargs is just: {'object': <Activity: Activity 2>}
        context['submissions'] = self.get_object().get_submissions(kwargs['party_id'])       
        return context

    @method_decorator(user_passes_test(active_participant))
    def dispatch(self, *args, **kwargs):
        return super(ActivityView, self).dispatch(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

python django django-class-based-views class-based-views

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

403与django基于类的视图

所以这是我写的一个简单的观点.

class PostTestView(View):
    def post(self, request, *args, **kwargs):
        print request.POST
        return HttpResponse("Hello there")
Run Code Online (Sandbox Code Playgroud)

urls.py对以上观点有这一行:

url(r'^test/create$',PostTestView.as_view(), name='app.views.create_test')
Run Code Online (Sandbox Code Playgroud)

但是405 Http error当我试图击中时,我得到了一个http://127.0.0.1:8000/app/test/create

这显然意味着我的方法post不在定义的方法列表中.但我在我看来已将其定义如上.这可能有什么问题?我很无能为力

python django post http-status-code-405 django-class-based-views

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

基于get_queryset类的视图中的Django GET?q =“ parameter”

如何访问网址中的“参数”一词:

operations_product_search/?q=parameter
Run Code Online (Sandbox Code Playgroud)

这里:

ASearchView(ListView)类:

...

def get_queryset(self, **kwargs):
    q = self.kwargs["q"]  <--- This is not working
Run Code Online (Sandbox Code Playgroud)

django django-urls django-class-based-views

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

Django CreateView没有返回HttpResponse对象

无法弄清楚为什么CreateView不回来HttpResponse.现在,我使用此视图仅用于发布(无GET).我认为那套self.success_url应该足够了(你可以看到def post).

class TripCreationView(CreateView):
    form_class = TripCreationForm
    template_name = 'frontend/homepage.html'

    def post(self, request, *args, **kwargs):
        self.success_url = request.POST.get('success_url') or reverse('frontend:homepage')
        super(TripCreationView, self).post(self, request, *args, **kwargs)
    #
    # def form_valid(self, form):
    #     trip = form.save(self.request)
    #     return HttpResponseRedirect(self.success_url)

    def get_form_kwargs(self):
        kwargs = super(TripCreationView, self).get_form_kwargs()
        kwargs['user'] = self.request.user
        return kwargs
Run Code Online (Sandbox Code Playgroud)

你知道该怎么办吗?

python django django-views django-class-based-views

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

将基于类的视图中的主键保存到另一个视图(django)

我不知道如何找到解决方案,但让我们从头开始。

这些是我的模型:

class Animal(models.Model):
SPECIES = (
    ("DOG", "DOG"),
    ("CAT", "CAT"),
)
species = models.CharField(max_length=4, choices=SPECIES)
name = models.CharField(max_length=20)
weight = models.PositiveSmallIntegerField(null=False, blank=False)
age = models.PositiveSmallIntegerField(null=False, blank=False)
color = models.CharField(max_length=10)
isill = models.BooleanField(null=False)
isagressive = models.BooleanField(null=False)
isadopted = models.BooleanField(null=False)
isreturned = models.NullBooleanField()
whichbox = models.CharField(max_length=5)
photo = models.ImageField(null=True, blank=True)

def __str__(self):
    return self.name


class MedicalHistory(models.Model):
animal = models.ForeignKey(Animal, on_delete=models.CASCADE)
disease = models.CharField(max_length=100)
medicine = models.CharField(max_length=20, null=True, blank=True)
therapy = models.CharField(max_length=50)
howmuchmed = models.CharField(max_length=50)
daterecord = models.DateField

def __str__(self):
    return self.disease …
Run Code Online (Sandbox Code Playgroud)

python django django-class-based-views

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

如何为仅返回登录用户拥有的数据的查询集编写Mixin?

如何为CBV编写通用的Mixin,以便查询集只返回登录用户拥有的数据?

django有可能吗?

如果是......有人可以给我具体的建议或答案如何在django中执行此操作...

谢谢

python django django-class-based-views

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