所以我正在玩list
对象,并发现一些奇怪的事情,如果list
创建list()
它使用更多的内存,而不是列表理解?我正在使用Python 3.5.2
In [1]: import sys
In [2]: a = list(range(100))
In [3]: sys.getsizeof(a)
Out[3]: 1008
In [4]: b = [i for i in range(100)]
In [5]: sys.getsizeof(b)
Out[5]: 912
In [6]: type(a) == type(b)
Out[6]: True
In [7]: a == b
Out[7]: True
In [8]: sys.getsizeof(list(b))
Out[8]: 1008
Run Code Online (Sandbox Code Playgroud)
来自文档:
列表可以通过以下几种方式构建:
- 使用一对方括号表示空列表:
[]
- 使用方括号,用逗号分隔项目:
[a]
,[a, b, c]
- 使用列表理解:
[x for x in iterable]
- 使用类型构造函数:
list()
或list(iterable)
但似乎使用list()
它会占用更多内存. …
我有两个连接的形式.基本上用户填写第一种形式,然后重定向到第二种形式,这增加了第一种形式的数据的价值.EG我有一个表单电影(第一个表单)然后我被重定向到表单(演员),它将演员添加到电影中.
在我的情况下,电影= Chiamata和演员= Offerta(我保留意大利人的名字,我需要:D)
精细.
这些是我在urls.py中的网址
url(r'^chiamata/$', ChiamataCreate.as_view(),name='chiamata_create'),
url(r'^chimamata/(?P<pk>\d+)/offerta$', OffertaCreate.as_view(), name='offerta_create'),
Run Code Online (Sandbox Code Playgroud)
我创建了这个视图
class ChiamataCreate(CreateView):
template_name = 'chiamata_form.html'
form_class = ChiamataForm
success_url=reverse_lazy('offerta_create',args=(??,))
Run Code Online (Sandbox Code Playgroud)
现在问题是如何获得chiamataForm创建的对象的PK.我需要将它添加到offerta_create的url中.
Django模板系统为html中的内容提供了一些选项(过滤器),但作为一个初学者,它们让我感到困惑.假设我正在按照教程制作一个简单的博客,并且博客内容需要转义 - 我相信内容,因为我是唯一一个编辑它的人.所以,问题是我应该做的像{{ post.content|autoescape }}
,{{ post.content|escape }}
或{{ post.content|safe }}
在html?
谢谢
编辑:我应该使用哪个过滤器将特殊字符自动转换为html实体?
编辑2:我刚刚意识到autoescape不是一个有效的过滤器.
在我request.POST
得到一个查询字典时,这个字典中的一个项目是一个包含多个项目的列表(pass_id
)例如.
我想检索每个值pass_id
并存储在新列表中.你能为此建议代码吗?
免责声明:我是python和Django的初学者,但有Drupal编程经验.
如何覆盖此默认小部件:
#models.py
class Project(models.Model):
color_mode = models.CharField(max_length=50, null=True, blank=True, help_text='colors - e.g black and white, grayscale')
Run Code Online (Sandbox Code Playgroud)
在我的表格中有一个选择框?以下是好的还是我错过了什么?
#forms.py
from django.forms import ModelForm, Select
class ProjectForm(ModelForm):
class Meta:
model = Project
fields = ('title', 'date_created', 'path', 'color_mode')
colors = (
('mixed', 'Mixed (i.e. some color or grayscale, some black and white)'),
('color_grayscale', 'Color / Grayscale'),
('black_and_white', 'Black and White only'),
)
widgets = {'color_mode': Select(choices=colors)}
Run Code Online (Sandbox Code Playgroud)
在阅读https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#overriding-the-default-field-types-or-widgets之后,由于该示例仅讨论TextArea和小部件讨论,因此我感到迷茫.似乎排除了ModelForm.
谢谢!
我正在get_object_or_404
尝试从我的数据库中获取值列表.我正在尝试过滤get_object_or_404
状态变量的函数,只捕获与之关联的值disease_id
.下面的代码不起作用(它抓取状态表中的所有值.任何想法?
views.py
def option(request, disease_id, state_id):
state = get_object_or_404(State, relevantdisease=disease_id)
disease = get_object_or_404(Disease, pk=disease_id)
context = {'state': state, 'disease':disease }
return render(request, "option.html", context)
Run Code Online (Sandbox Code Playgroud)
models.py
class State(models.Model):
state = models.CharField(max_length=300, verbose_name='state')
relevantdisease = models.ForeignKey(Disease, verbose_name="disease")
Run Code Online (Sandbox Code Playgroud) 我上课了:
class Tag(Base, TimestampMixin):
"""Tags"""
__tablename__ = 'tags'
__table_args__ = {'mysql_engine' : 'InnoDB', 'mysql_charset' : 'utf8' }
id = Column(Integer(11), autoincrement = True, primary_key = True)
tag = Column(String(32), nullable = False, unique = True)
cnt = Column(Integer(11), index = True, nullable = False, default = 1)
def __init__(self, tag):
t = session.query(Tag).filter_by(tag=tag).first()
if t:
self.cnt = t.cnt+1
self.tag = t.tag
else:
self.tag = tag
def __repr__(self):
return "<Tag('%s')>" % (self.tag, )
def __unicode__(self):
return "%s" % (self.tag, )
Run Code Online (Sandbox Code Playgroud)
添加标签时: …
给定一个id/pks列表,我想生成一个QuerySet
由列表中的索引排序的对象.
通常我会先说:
pk_list = [5, 9, 2, 14]
queryset = MyModel.objects.filter(pk__in=pk_list)
Run Code Online (Sandbox Code Playgroud)
当然,这将返回的对象,但在模型元排序属性的顺序,我希望得到的顺序记录pk
以秒pk_list
.
最终结果必须是一个 QuerySet
对象(不是列表),因为我希望将有序文件传递QuerySet
给Django的ModelMultipleChoiceField
表单字段.
我想在启动django命令之前运行命令.
例如:
$ python manage.py runserver
Validating models...
0 errors found
Django version 1.3, using settings 'creat1va.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
(started some command in the background)
[10/Jul/2011 21:50:26] "GET / HTTP/1.1" 200 1611
[10/Jul/2011 21:50:26] "GET /assets/css/master.css HTTP/1.1" 404 1783
[10/Jul/2011 21:50:26] "GET /assets/images/misc/logo.png HTTP/1.1" 404 1801
[10/Jul/2011 21:50:26] "GET /assets/images/icons/bo.gif HTTP/1.1" 404 1798
[10/Jul/2011 21:50:28] (My background process) "Some nice Feedback"
Run Code Online (Sandbox Code Playgroud)
主要思想是启动后台进程,并输出日志记录.
有没有办法实现这一点,没有黑客django来源?
我有一个被称为模型的模型GameProfile
,它与User
模型是一对一的关系.我用过HyperlinkedModelSerializer
我所有的设计.
对于GameProfile
,用户字段被认为是查询的主键,它是唯一的但我没有将其设置为主键.有没有办法将django serializer的默认行为更改为指向user__id
主键,并始终使用它来在详细信息视图中检索配置文件?
class GameProfileSerializer(serializers.HyperlinkedModelSerializer):
"""
"""
user_pk = serializers.Field(source='user.id')
class Meta:
model = GameProfile
class GameProfileViewSet(viewsets.ModelViewSet):
"""
"""
queryset = GameProfile.objects.all()
serializer_class = GameProfileSerializer
def get_queryset(self):
""" get_queryset
"""
queryset = super(GameProfileViewSet, self).get_queryset()
if not queryset.exists():
raise Http404
if self.request.user.is_authenticated() and not self.request.user.is_superuser:
return queryset.filter(user=self.request.user)
return queryset
Run Code Online (Sandbox Code Playgroud)
请指教,提前谢谢:)