标签: django-generic-views

处理 Django DeleteView 中的保护错误

我正在使用 DjangoDeleteView删除我的数据库中的项目。我使用单独的模板来显示删除确认消息,但是当我按下是按钮时,我得到了ProtectedError因为客户表与帐户表相关联。因此,我想ProtectedError在同一个模板中处理并为用户提供另一条消息。

这是我用来执行删除的代码:

class Customer(DeleteView):
    #Delete Customers
    model = Customer
    template_name = 'project_templates/delete_customer.html'

    def get_success_url(self):
        return reverse('inactive_customers')
Run Code Online (Sandbox Code Playgroud)

如果有人可以建议我处理这种情况的方法,那就太好了。

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

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

django generic.listview中的额外上下文

所以我有两个模型:汽车和图片.一辆车可能有多张照片.

现在我想使用列表视图显示所有车辆以及每辆车的一张图片,有人可以告诉我该怎么做?以下是我的代码

# models.py
class Car(models.Model):
  name = models.CharField(max_length=100)
class Picture(models.Model):
  car = models.ForeignKey(Car,related_name='pictures')
  picture = models.ImageField()

# views.py
class CarList(ListView):
  model = Car
Run Code Online (Sandbox Code Playgroud)

django django-generic-views

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

如何在Django通用视图中添加额外的上下文和查询集字段?

我正在构建Django应用程序,提交链接和投票功能.

我想显示所有链接,由用户在用户详细信息页面中投票.我可以使用以下方法在python shell中检索它们:

Link.objects.filter(votes__voter=user)
Run Code Online (Sandbox Code Playgroud)

但我不知道如何将此作为额外的上下文字段添加到视图中.以下是代码:

models.py

class Link(models.Model):
    title       = models.CharField(max_length=200)
    submitter   = models.ForeignKey(User)
    submit_date = models.DateTimeField(auto_now_add=True)
    up_votes    = models.IntegerField(default=0, blank=True, db_index=True)
    ...

class UserProfile(models.Model):
    user        = models.OneToOneField(User, unique=True)
    ...

class Vote(models.Model):
    voter = models.ForeignKey(User)
    link = models.ForeignKey(Link, related_name='votes')
    ...
Run Code Online (Sandbox Code Playgroud)

views.py

class UserProfileDetailView(DetailView):
    model       = get_user_model()
    slug_field  = "username"
    template_name = "user_detail.html"


    def get_object(self, queryset=None):
        user    = super(UserProfileDetailView, self).get_object(queryset)s
        UserProfile.objects.get_or_create(user=user)
        return user
Run Code Online (Sandbox Code Playgroud)

user_detail.html

...
{% if object == request.user and request.user.is_authenticated %}
    <p><a href='{% url "edit_profile" %}'>Edit My Profile</a></p>
{% …
Run Code Online (Sandbox Code Playgroud)

django django-queryset django-views django-generic-views django-context

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

在 Django DetailView 中获取表单

我目前正在尝试显示一个自定义表单,我可以在相应视图中更改表单

在 .html 中

<form action="{% url 'systems_system_update' system.id %}" id="system_update_form" method="post" class="form">
        {% csrf_token %}
        {% buttons %}
          <button type="submit" class="btn btn-primary">Update {{ system.name }}</button>
        {% endbuttons %}
        {% bootstrap_form system_update_form %}
        {% buttons %}
          <button type="submit" class="btn btn-primary">Update {{ system.name }}</button>
        {% endbuttons %}
      </form>
Run Code Online (Sandbox Code Playgroud)

所以我试图显示 system_update_form 在 SystemDetailView 的视图中定义的位置

class SystemDetailView(DetailView):
"""Detail view for Systems"""

form_class = SystemForm
model = System
template_name = 'systems/system_detail.html'

def get_form(self, form_class):
    form = super(SystemDetailView, self).get_form(form_class)
    form.fields['primary_purpose_business_use'].label = "Primary purpose/business use"
    form.fields['secondary_purpose_business_uses'].label …
Run Code Online (Sandbox Code Playgroud)

python forms django django-generic-views detailview

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

Django:在通用视图中处理空查询集

我有一个通用视图,有时不返回任何内容。

在这种情况下,我如何有效地处理它并引发 404?

我的方法成功了,但命中了数据库。

class MyListView(ListView):
    template_name = 'template/quest.html'

    def get_queryset(self, *args, **kwargs):

        query = (
            MyModel.objects
            .filter(...)
            .filter(...)
        )

        if query.exists():
            return query
        else:
            raise Http404
Run Code Online (Sandbox Code Playgroud)

django django-generic-views

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

Django通用视图中get_context_data和queryset之间的差异?

Django通用视图get_context_data和之间有什么区别queryset?他们似乎做同样的事情?

python django django-views django-generic-views

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

Django CreateView:在验证之前设置用户

我有一个模型,根据对象是由用户还是由系统创建的,对其名称字段使用不同的验证。

class Symbol(models.Model):
    name = models.CharField(_('name'), unique=True, max_length=64)
    creator = models.ForeignKey('User', null=True, on_delete=models.CASCADE)
    def is_system_internal(self):
        """
        whether or not this Symbol belongs to the system rather than having been created by a user
        """
        return (self.creator is None)
    def clean(self):
        """
        ensure that the Symbol's name is valid
        """
        if self.is_system_internal():
            if not re.match("^_[a-zA-Z0-9\-_]+$", self.name):
                raise ValidationError(
                    _("for system-internal symbols, the name must consist of letters, numbers, dashes (-) and underscores (_) and must begin with an underscore."),
                    params = …
Run Code Online (Sandbox Code Playgroud)

django django-validation django-generic-views django-class-based-views

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

我想向 Django DetailView 添加条件

我正在使用 Django 通用视图,DetailView。但我想阻止用户访问尚未通过 email_confirmed 的详细帖子。我在 User 模型中有一个 email_confirmed 字段。

我的代码是:

@method_decorator(login_required(login_url='/login/'), name='dispatch')
class RecruitView(generic.DetailView):
    model = Recruit
    template_name = 'recruit.html'
Run Code Online (Sandbox Code Playgroud)

我想补充一点:

    if not request.user.email_confirmed:
        error_message = "you did not confirmed yet. please check your email."
        return render(request, 'info.html', {'error_message': error_message})
    else: pass
Run Code Online (Sandbox Code Playgroud)

如何将此条件添加到 DetailView?

(我试图覆盖“as_view”,但我不知道该怎么做)

python django django-generic-views detailview

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

如何在DetailView中向上下文对象添加数据?

我需要在Django中编写一个DetailView。我实现了此功能。但是,我需要与上下文对象一起添加更多数据。我将如何实现这一目标。

我的一般观点是:

class AppDetailsView(generic.DetailView):
    model = Application
    template_name = 'appstore/pages/app.html'
    context_object_name = 'app'
Run Code Online (Sandbox Code Playgroud)

我需要再向上下文对象添加一个变量:

response = list_categories(storeId)
Run Code Online (Sandbox Code Playgroud)

django django-generic-views

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

访问 django urls.py 中的请求对象

该问题的灵感也来自此处的文档。

我在 Django 中使用通用视图 ( ListView ) 来列出当前登录用户提出的所有问题。我很想在不创建视图的情况下做到这一点views.py。所以在 urls.py 我添加了一个路径,如:

urlpatterns += [
    path('myqn/', login_required(views.ListView.as_view(model=models.Question, queryset=models.Question.objects.filter(user__id=request.user.id), template_name='testapp/question_list.html', context_object_name='questions')), name='myqn'),
]
Run Code Online (Sandbox Code Playgroud)

它给了我:

NameError:未定义名称“请求”

我知道。因为,请求对象由 URLConf 传递给 View 类/函数。那么,有没有办法,我可以在这个范围内访问user.id。

PS:如果我替换user__id=9. 它列出了用户 9 提出的所有问题。:)

python django django-views django-generic-views

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