标签: django-class-based-views

使用基于类的视图和ajax的Django应用程序?

我正在学习Django,我发现了基于类的视图,我想知道如何在这些视图上实现Ajax.

我搜索了github的django项目,我发现一些使用基于类的视图但不是ajax.

那么......有谁知道一个开源项目同时使用这两个东西?这种方式更容易学习.

谢谢 :)

django ajax django-class-based-views

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

在ForeignKey中设置CreateView的初始值(非self.request.user)

我试图在基于类的视图CreateView中访问ForeignKeys.我希望能够从ForeignKeys动态设置CBV中的初始值,并动态设置来自ForeignKeys的模板链接.

这两个问题(1.初始值,2.模板链接)可以用类似的方法解决,也可以用不同的方法解决......我还在学习.也许第一个问题可以在内部解决views.py,第二个问题可以用模板语法解决ingredient_form.html吗?

我已经看到有关SO设置来自users(self.request.user)的初始值的问题,而不仅仅是来自普通外键的问题models.py.

我正在经历django-by-errors,并试图添加额外的功能来扩展我的django知识.

我的问题特别集中在views.py:IngredientAddView(CreateView)ingredient_form.html,并在urls.py:'recipe-detail''ingredient-add".

当我查看时'recipe-detail',我可以点击链接'ingredient-add'.我想'ingredient-add'"知道"哪个食谱点击它,并且能够将此食谱设置为初始值(我的尝试views.py:IngredientAddView:get_initials(self)不起作用),并且还能够链接回这个食谱(我的尝试ingredient_form.html:{% comment %}不起作用) ).

非常感谢任何帮助.

models.py

class Food(models.Model):
    name=models.CharField(max_length=20,unique=True)

    def __str__(self):
        return self.name

    def get_absolute_url(self):
        return reverse('food-detail',kwargs={'pk':self.pk})

class Recipe(models.Model):
    title=models.CharField(max_length=80,unique=True)
    slug=models.SlugField(max_length=80,unique=True)
    description=models.TextField(blank=True)

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('recipe-detail',kwargs={'slug':self.slug})

class Ingredient(models.Model):
    recipe=models.ForeignKey(Recipe)
    food=models.ForeignKey(Food)

    def __str__(self):
        return '%s (%s)' % (self.food, self.recipe)
Run Code Online (Sandbox Code Playgroud)

views.py

class FoodListView(ListView):
    model=Food

class …
Run Code Online (Sandbox Code Playgroud)

django foreign-keys django-templates django-class-based-views

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

如何在CVB的`get_context_data`中获得'pk'或'id'?

如何get_context_data从CVB DetailView中获取'pk'或'id' ?

class MyDetail(DetailView):
    model = Book
    template_name = 'book.html'

    def get_context_data(self, **kwargs):
            context = super(MyDetail, self).get_context_data(**kwargs)
            context['something'] = Book.objects.filter(pk=pk)
            return context
Run Code Online (Sandbox Code Playgroud)

网址:

url(r'^book/(?P<pk>\d+)/$', MyDetail.as_view(), name='book'),
Run Code Online (Sandbox Code Playgroud)

django django-class-based-views

18
推荐指数
4
解决办法
2万
查看次数

Django:基于类的视图一次可以接受两种形式吗?

如果我有两种形式:

class ContactForm(forms.Form):
    name = forms.CharField()
    message = forms.CharField(widget=forms.Textarea)

class SocialForm(forms.Form):
    name = forms.CharField()
    message = forms.CharField(widget=forms.Textarea)
Run Code Online (Sandbox Code Playgroud)

并且想要使用基于类的视图,并将两个表单发送到模板,是否可能?

class TestView(FormView):
    template_name = 'contact.html'
    form_class = ContactForm
Run Code Online (Sandbox Code Playgroud)

看起来FormView一次只能接受一个表单.在基于函数的视图中,虽然我可以轻松地将两个表单发送到我的模板并在request.POST中检索两者的内容.

variables = {'contact_form':contact_form, 'social_form':social_form }
return render(request, 'discussion.html', variables)
Run Code Online (Sandbox Code Playgroud)

这是使用基于类的视图(通用视图)的限制吗?

非常感谢

django django-class-based-views django-1.5

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

'function'对象没有属性'as_view'

我试图使用基于类的视图,并得到一个奇怪的错误.我使用视图的方式似乎是正常的方式:

配料/ models.py:

from django.db import models
from django.utils import timezone


class Ingredient(models.Model):
    name        = models.CharField(max_length=255)
    description = models.TextField()

    def get_prices():
        purchases   = self.purchase_set.all()
        prices      = [purchase.price for purchase in purchases]
Run Code Online (Sandbox Code Playgroud)

配料/ views.py:

from django.shortcuts           import render, render_to_response, redirect
from django.http                import HttpResponse, HttpResponseRedirect
from django.views.generic.edit  import CreateView
from .models                    import Ingredient, Purchase

def IngredientCreateView(CreateView):
    model = Ingredient
    fields = ['all']
Run Code Online (Sandbox Code Playgroud)

配料/ urls.py:

from django.conf.urls import patterns, include, url

from ingredients.views import IngredientCreateView

urlpatterns = patterns('',            
    url(r'^new_ingredient$',          IngredientCreateView.as_view(),             name='new-ingredient'),
) …
Run Code Online (Sandbox Code Playgroud)

python django django-class-based-views

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

CreateView中的多个表单和表单集

我有2个型号,FatherSon.

我有一个页面要注册Father.在同一页面上,我有一个要注册的表单Son.

页面上有一个"更多"按钮,可以在同一页面上添加另一个Father和它们各自的按钮Son.

有没有人使用过任何例子CreateView

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

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

从Django中基于类的通用视图向ModelForm发送request.user对象

因此,我的目标是能够在ModelForm中过滤ModelChoiceField查询集,只包含request.user创建的Places.

我的ModelForm很简单:

class PlaceEventForm(models.ModelForm):
    class Meta:
        model = Event
Run Code Online (Sandbox Code Playgroud)

我希望能够添加如下内容:

def __init__(self, *args, **kwargs):
    super(PlaceEventForm, self).__init__(*args, **kwargs)
    self.fields['place'].queryset = Place.objects.filter(created_by=request.user)
Run Code Online (Sandbox Code Playgroud)

但是,我似乎找不到在ModelForm中访问请求的方法.

我的观点是这样的:

class PlaceEventFormView(CreateView):
    form_class = PlaceEventForm
    template_name = 'events/event_create.html'

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

我不确定这是否接近我应该做的,但我试过:

def get_form_kwargs(self):
    kwargs = super(PlaceEventFormView, self).get_form_kwargs()
    kwargs.update({'place_user': self.request.user})
    return kwargs
Run Code Online (Sandbox Code Playgroud)

但是我得到了错误:init()得到了一个意外的关键字参数'place_user'

关于这个的任何想法?或者,任何人都可以想到一种方法来过滤我的ModelChoiceField在视图中,而无需将我的请求传递给ModelForm?

django django-forms django-class-based-views

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

django泛型(类)视图中的多个表单类

我想将django 1.3的基于类的通用视图用于表单,但有时必须在一个表单中管理多个表单类.但是,看起来基于FormMixin的现有视图假定单个表单类.

通用视图是否可行,我该怎么做?

编辑:澄清一下,我有一个表单但不止一个(基于ModelForm)类.例如在Django文档的inline_formset例子,我想提出一个网页,一个作家他的书可以一次编辑,在一个单一的形式:

author_form = AuthorForm(request.POST, instance = author)
books_formset = BookInlineFormSet(request.POST, request.FILES, instance=author)
Run Code Online (Sandbox Code Playgroud)

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

15
推荐指数
2
解决办法
9489
查看次数

Django类基于post-only视图

很抱歉,如果这是一个微不足道的问题,但我一直在寻找一段时间,并且无法找到一个好的实现.

有人可以通过继承任何通用视图来提供如何在Django中实现仅后视图(可以处理文件上传)的示例吗?

我想创建一个处理所有博客帖子评论创建逻辑的端点.评论表格嵌入在我的博客页面上,因此,这些数据将被发送到网址POST.

django django-views django-class-based-views

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

Django - UpdateView与内联formset试图保存重复记录?

我有一个Expense模型和一个ExpenseLineItem模型.就像典型的费用/发票一样,一个费用可以有多个行项目来弥补发票的总成本.我正在尝试使用基于类的视图来创建和更新费用.我已成功编码CreateView以使用多个费用订单项进行新费用.

我的问题是当我尝试更新已有多个费用行项目的现有费用时.这是我下面的代码,我无法弄清楚问题是什么.该混入(TitleMixin,CancelSuccessMixin,SelectedApartment)是我的,做工精细.

我收到一个错误,我相信,这意味着它正在尝试保存副本,ExpenseLineItems但由于那些已经存在而失败.几乎就像我没有提出instance论点.

我究竟做错了什么?

forms.py

class ExpenseForm(ModelForm):
  class Meta:
    model = Expense
    fields = ['apart', 'inv_num', 'vendor', 'due_date']

ExpenseLineItemFormset = inlineformset_factory(Expense, ExpenseLineItem, fields=('description', 'account', 'amt'), can_delete=False)
Run Code Online (Sandbox Code Playgroud)

这是我的ExpenseUpdate观点:

class ExpenseUpdate(TitleMixin, CancelSuccessMixin, SelectedApartment, UpdateView):
  model = Expense
  form_class = ExpenseForm
  template_name = 'accounting/expense.html'

  def get(self, request, *args, **kwargs):
    self.object = self.get_object()
    form_class = self.get_form_class()
    form = self.get_form(form_class)
    expense_line_item_form = ExpenseLineItemFormset(instance = self.object) …
Run Code Online (Sandbox Code Playgroud)

django django-forms django-class-based-views

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