相关疑难解决方法(0)

如何使用基于Django类的通用ListView进行分页?

如何使用Django 1.3分页?

文档对此不是很清楚.

  • 怎么回事views.py

  • 什么到我的模板?

  • 什么到我的URLconf文件?

django

176
推荐指数
2
解决办法
9万
查看次数

基于Django类的视图中的URL参数和逻辑(TemplateView)

我不清楚在Django 1.5中如何最好地访问基于类的视图中的URL参数.

考虑以下:

视图:

from django.views.generic.base import TemplateView


class Yearly(TemplateView):
    template_name = "calendars/yearly.html"

    current_year = datetime.datetime.now().year
    current_month = datetime.datetime.now().month

    def get_context_data(self, **kwargs):
        context = super(Yearly, self).get_context_data(**kwargs)
        context['current_year'] = self.current_year
        context['current_month'] = self.current_month
        return context
Run Code Online (Sandbox Code Playgroud)

URL配置:

from .views import Yearly


urlpatterns = patterns('',
    url(
        regex=r'^(?P<year>\d+)/$',
        view=Yearly.as_view(),
        name='yearly-view'
    ),
)
Run Code Online (Sandbox Code Playgroud)

我想year在我的视图中访问参数,所以我可以像以下那样执行逻辑:

month_names = [
    "January", "February", "March", "April", 
    "May", "June", "July", "August", 
    "September", "October", "November", "December"
]

for month, month_name in enumerate(month_names, start=1):
    is_current = False
    if year == current_year …
Run Code Online (Sandbox Code Playgroud)

python django django-class-based-views

86
推荐指数
5
解决办法
7万
查看次数

基于Django类的视图ListView与表单

主视图是一个简单的分页ListView,我想添加一个搜索表单.

我认为这样的事情可以解决问题:

class MyListView(ListView, FormView):
    form_class = MySearchForm
    success_url = 'my-sucess-url'
    model = MyModel
    # ...
Run Code Online (Sandbox Code Playgroud)

但显然我弄错了......我在官方文档中找不到如何做到这一点.

建议?

django views

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

Django:基于类的ListView中的搜索表单

我试图实现一个Class Based ListView显示选择的表集.如果第一次请求站点,则应显示数据集.我更喜欢POST提交,但GET也没关系.

这是一个容易处理的问题,function based views但是基于类的视图我很难理解.

我的问题是我得到了各种错误,这是由于我对基于分类的观点的理解有限.我已阅读各种文档,我理解直接查询请求的视图,但只要我想在查询语句中添加一个表单,我就遇到了不同的错误.对于下面的代码,我会收到一个ValueError: Cannot use None as a query value.

根据表单条目(否则选择整个数据库),基于类的ListView的最佳实践工作流程是什么?

这是我的示例代码:

models.py

class Profile(models.Model):
    name = models.CharField(_('Name'), max_length=255)

    def __unicode__(self):
        return '%name' % {'name': self.name}

    @staticmethod
    def get_queryset(params):

        date_created = params.get('date_created')
        keyword = params.get('keyword')
        qset = Q(pk__gt = 0)
        if keyword:
            qset &= Q(title__icontains = keyword)
        if date_created:
            qset &= Q(date_created__gte = date_created)
        return qset
Run Code Online (Sandbox Code Playgroud)

forms.py

class ProfileSearchForm(forms.Form):
    name = forms.CharField(required=False)
Run Code Online (Sandbox Code Playgroud)

views.py

class ProfileList(ListView):
    model = Profile
    form_class = …
Run Code Online (Sandbox Code Playgroud)

forms django listview django-class-based-views class-based-views

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

在FormView form_valid方法中更新上下文数据?

我有一个QuestionView派生自FormView班级的班级.这是一个代码片段来解释我的问题:

class QuestionView(FormView):
    ...
    context_var1 = y
    def form_valid (self, form):
    ...
    self.context_var1 = x
    ...
    def get_context_data(self, **kwargs):
    ...
    context['context_var1'] = self.context_var1
    ...
    return context
Run Code Online (Sandbox Code Playgroud)

如上所示,我更新了一组上下文变量form_valid,我打算在模板中使用这些变量的值 - 因此是context字典中的变量.这段代码的问题context_var1在于没有看到更改 - 可能是因为get_context_dataform_valid方法之前调用了.这有解决方法吗?

python django django-class-based-views

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

Django CBV:轻松访问 get_context_data() 中的 url 参数?

据我所知,在自定义方法中访问命名 url 参数的标准方法get_context_data()是通过self.kwargs.

然而,self.kwargs语法变得很尴尬,尤其是在处理大量参数时。因此,我一直在每个方法的顶部采用类似的方法get_context_data()——只是为了获得易于处理的局部变量:

def get_context_data(self, **kwargs):
    var1, var2, var3, var4, var5 = [self.kwargs[x] for x in ['var1', 'var2', 'var3', 'var4', 'var5']]
    # do stuff with var1, var2, ...
    # instead of self.kwargs['var1'], self.kwargs['var2'], ...
Run Code Online (Sandbox Code Playgroud)

这是丑陋且痛苦的,但它最终使事情变得更容易使用和阅读。

有没有一种简单的方法来清理它并将命名参数放入局部变量中?缺少重写get()方法、子类化 Django 的通用视图等?我怀疑我在这里错过了一些非常基本的、基本的 python 概念。

以下是调用的默认get()方法,get_context_data()以防在此处引用有帮助:

def get(self, request, *args, **kwargs):
    context = self.get_context_data(**kwargs)
    return self.render_to_response(context)
Run Code Online (Sandbox Code Playgroud)

更新:

我的错误,调用get()方法实际上如下(FormView在这种情况下泛型正在被子类化)。不幸的是,传入的 kwargsget_context_data()与以下不同self.kwargs

def get(self, request, …
Run Code Online (Sandbox Code Playgroud)

django django-views django-class-based-views

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