小编Ala*_*air的帖子

如何结合 Django 的“LoginRequiredMixin”和表单工具的“FormPreview”?

LoginRequiredMixin在其他基于类的视图上效果很好。表单工具也FormPreview运行良好。但是当我尝试同时使用两者时,它们LoginRequiredMixin就会被忽略。

如果我使用表单工具Django 文档中最基本的示例,情况也是如此。

我发现两件事很奇怪(但这不一定是原因):

  • “这个 mixin 应该位于继承列表的最左边。” 这听起来像是有一些内部黑客行为,如果有人做了一些不规则的事情,就会崩溃。没有解释为什么。
  • 表单工具视图应该被称为它本身,而不是方法.as_view(),这又不符合标准。

这是一个错误吗?我能做些什么?

python django django-forms django-authentication

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

Django REST单元测试TypeError:__ init __()需要1个位置参数但是给出了2个

我用命令启动下面的代码$ python manage.py test,它返回错误:

TypeError: __init__() takes 1 positional argument but 2 were given
Run Code Online (Sandbox Code Playgroud)

据我所知,我只是self去了__init__ method,这个额外的arg来自哪里?我在这里检查了多个答案并查看了django文档,但似乎无法找到我的错误.

是什么造成的?

码:

import requests
import json
from django.contrib.auth.models import User

from django.test import TestCase
from django.test import Client

class BasicFunctionality(TestCase):

    def __init__(self):
        user_name = 'boris_the_blade'
        password = 'boris_the_sneaky_russian'
        self.client = Client()
        self.login_status = self.createUserAndLogin(user_name, password)

    def createUserAndLogin(self, user_name, password):
        self.user = User.objects.create_user(username=user_name, password=password)
        login = self.client.login(username=user_name, password=password)

        return login

    def test_login(self):
        self.assertTrue(self.login_status)
Run Code Online (Sandbox Code Playgroud)

全终端输出:

Traceback (most recent …
Run Code Online (Sandbox Code Playgroud)

python django

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

需要从模板中的django获取实例id

我是 django 的新手,我有一个问题。我有一个 Django 表单

class MyModelForm(ModelForm):
    class Meta:
        model = MyModel
        fields = ['id', 'field1', 'field2', 'field3']
        localized_fields = ('id', 'field1', 'field2', 'field3')
Run Code Online (Sandbox Code Playgroud)

当我尝试输出时id它不起作用,但它与其他人一起工作。

{{form.id.value}}
Run Code Online (Sandbox Code Playgroud)

id如何从表单中获取模板中的值?

python django django-templates django-forms

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

Django 1.11 禁止直接分配给多对多集合的前端

我有一个模型 UserSong,它有两个 m2m 字段,其中包含模型 Genre 和 Language

class UserSong(models.Model):
    title           = models.CharField(max_length=100)
    song_file       = models.FileField(upload_to=user_song_directory_path, validators=[validate_audio_file_extension])
    genre           = models.ManyToManyField(Genre)
    language        = models.ManyToManyField(Language)
Run Code Online (Sandbox Code Playgroud)

流派是

class Genre(models.Model):
    name            = models.CharField(max_length=255)
    created_date    = models.DateTimeField(auto_now_add=True)
    updated_date    = models.DateTimeField(auto_now=True)
    status          = models.BooleanField(default=False)
Run Code Online (Sandbox Code Playgroud)

语言课是

class Language(models.Model):
    name            = models.CharField(max_length=255)
    created_date    = models.DateTimeField(auto_now_add=True)
    updated_date    = models.DateTimeField(auto_now=True)
    status          = models.BooleanField(default=False)
Run Code Online (Sandbox Code Playgroud)

我正在尝试在 UserSong 对象中添加 m2m 字段作为

genre_name_list =  Genre.objects.filter(name__in=self.cleaned_data['genre'].values_list('name',flat=True))
        # instance.genre.add(*genre_name_list)
        instance.genre.set(genre_name_list)

language_name_list =  Language.objects.filter(name__in=self.cleaned_data['language'].values_list('name',flat=True))
        # instance.language.add(*language_name_list)
        instance.language.set(language_name_list)
Run Code Online (Sandbox Code Playgroud)

这里的问题在于,m2m 表正在更新,但 Django 仍然给我错误 Direct assignment to the forward side of …

django m2m

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

成功 url 到当前 url

我正在使用基于 Django 类的视图和表单。我希望视图在提交新消息后保持在同一页面上。网址就像

localhost:8000/chat/messages/username/
Run Code Online (Sandbox Code Playgroud)

其中 'username' 是接收消息的用户的用户名

class ThreadView(LoginRequiredMixin, FormMixin, DetailView):
    template_name = 'thread.html'
    form_class = ComposeForm

    def get_queryset(self):
        return Thread.objects.by_user(self.request.user)

    def get_object(self):
        other_username  = self.kwargs.get("username")
        obj, created    = Thread.objects.get_or_new(self.request.user, other_username)
        if obj == None:
            raise Http404
        return obj

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['form'] = self.get_form()
        return context

    def post(self, request, *args, **kwargs):
        if not request.user.is_authenticated:
            return HttpResponseForbidden()
        self.object = self.get_object()
        form = self.get_form()
        if form.is_valid():
            return self.form_valid(form)
        else:
            return self.form_invalid(form)

    def form_valid(self, form):
        thread = self.get_object()
        user …
Run Code Online (Sandbox Code Playgroud)

python django django-forms

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

在django的get方法中隐藏csrf令牌

如何在 Django 的 get 方法中隐藏 CSRF 令牌?当我们调用 get 方法时,只有参数需要在浏览器 URL 中可见,而不是 CSRF 令牌。

django django-csrf

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

AttributeError:模块“django.db.models”没有属性“MultiPolygonField”

我面临的问题是:

AttributeError: module 'django.db.models' has no attribute 'MultiPolygonField'. 
Run Code Online (Sandbox Code Playgroud)

当我尝试时它被 django 抛出makemigrations。旧的迁移文件(仅完成了 1 个 makemigrations 文件)已被删除。所以 Django 出于某种原因认为我导入django.db.models而不是django.contrib.gis.db.

我的 models.py 代码有问题(由于“geom”字段行上的代码中断)

from django.contrib.gis.db import models
from renter.models import *
from classification_list.models import*

class ForestryKeys(models.Model):

    id = models.IntegerField(primary_key=True)
    df_forestry = models.TextField(blank=True, null=True),
    geom = models.MultiPolygonField(geography=True, null=True, blank=True, verbose_name='gmtry')

    class Meta:
        managed = True
        verbose_name = 'frst'
        verbose_name_plural =  'frtses' 
Run Code Online (Sandbox Code Playgroud)

python django postgresql postgis django-models

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

在 Django 中重定向时如何传递 extra_context

我的意见.py:

 @login_required
 def some_views(request):
     if request.method == 'POST':
         form = AddressCreateFrom(request.POST)
         if form.is_valid():
             name = form.cleaned_data['Address']
             ip_value = form.cleaned_data['value']
             user_list = get_username(name)
             address_create = form.save()
             extra_context = {
                 'user_list': user_list
                 }
             return redirect_to(request, url=address_create.get_absolute_url())
     else:
         form = AddressCreateFrom()
     extra_context = {
         'form':AddressCreateFrom(initial={'user': request.user.pk})
         }
     return direct_to_template(request,'networks/user_form.html',extra_context)
Run Code Online (Sandbox Code Playgroud)

在form.py中:

 class AddressCreateFrom(forms.ModelForm):
     Address = forms.CharField(max_length=40)
     value = forms.CharField(max_length=40)
     class Meta:
         model = Network
         widgets = {
             'user': forms.HiddenInput()
           }
Run Code Online (Sandbox Code Playgroud)

如您所见,我Address and valueAddressCreateForm课堂上使用带有两个额外 Django 表单字段的 Django 模型表单。我在渲染模板时需要所有字段。

确实some_views方法工作正常,但我也想呈现一些额外的数据写入 …

django django-templates django-forms django-views

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

Python/Django - 如何更改模板中的变量?

我有一个变量,我需要在模板内更改.

让我们说变量foo4,但我需要值foo + 1.

然后我会在if声明中使用它,如下所示:

{% if bar == foo+1 %}
<p>Condition has been met!</p>
{% endif %}
Run Code Online (Sandbox Code Playgroud)

python django variables django-templates

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

如何获得给定主键名称变量和pk值的对象?

如果我有一个主键名称的变量,如何获得给定该变量和主键值的对象?

例如

pk_name = 'username'
pk = 'bob'

class_name.objects.get(pk_name=pk)  # this obviously doesn't work because it looks for a field called pk_name
Run Code Online (Sandbox Code Playgroud)

python django django-models

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