我用命令启动下面的代码$ 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) 我是 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如何从表单中获取模板中的值?
我有一个模型 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 类的视图和表单。我希望视图在提交新消息后保持在同一页面上。网址就像
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) 如何在 Django 的 get 方法中隐藏 CSRF 令牌?当我们调用 get 方法时,只有参数需要在浏览器 URL 中可见,而不是 CSRF 令牌。
我面临的问题是:
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) 我的意见.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 value在AddressCreateForm课堂上使用带有两个额外 Django 表单字段的 Django 模型表单。我在渲染模板时需要所有字段。
确实some_views方法工作正常,但我也想呈现一些额外的数据写入 …
我有一个变量,我需要在模板内更改.
让我们说变量foo是4,但我需要值foo + 1.
然后我会在if声明中使用它,如下所示:
{% if bar == foo+1 %}
<p>Condition has been met!</p>
{% endif %}
Run Code Online (Sandbox Code Playgroud) 如果我有一个主键名称的变量,如何获得给定该变量和主键值的对象?
例如
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) django ×10
python ×7
django-forms ×4
django-csrf ×1
django-views ×1
m2m ×1
postgis ×1
postgresql ×1
variables ×1