小编Dan*_*man的帖子

Jinja 2 - Django Form:渲染编码HTML

我在Django项目中测试Jinja2并且有一个奇怪的输出.当我渲染表单时,一些字符是HTML编码的(< >等等)

在模板中:

{{ form.as_p() }}
Run Code Online (Sandbox Code Playgroud)

它呈现给浏览器:

<p><label for="id_username">Utilisateur:</label> <input autocomplete="off" id="id_username" type="text" name="username" maxlength="100" /></p> <p><label for="id_password">Mot de passe:</label> <input autocomplete="off" type="password" name="password" id="id_password" /></p>
Run Code Online (Sandbox Code Playgroud)

看来源:

&amp;lt;p&amp;gt;&amp;lt;label for=&amp;quot;id_username&amp;quot;&amp;gt;Utilisateur:&amp;lt;/label&amp;gt; &amp;lt;input autocomplete=&amp;quot;off&amp;quot; id=&amp;quot;id_username&amp;quot; type=&amp;quot;text&amp;quot; name=&amp;quot;username&amp;quot; maxlength=&amp;quot;100&amp;quot; /&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;&amp;lt;label for=&amp;quot;id_password&amp;quot;&amp;gt;Mot de passe:&amp;lt;/label&amp;gt; &amp;lt;input autocomplete=&amp;quot;off&amp;quot; type=&amp;quot;password&amp;quot; name=&amp;quot;password&amp;quot; id=&amp;quot;id_password&amp;quot; /&amp;gt;&amp;lt;/p&amp;gt;
Run Code Online (Sandbox Code Playgroud)

有谁知道这个问题?

python django jinja2

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

django目录布局说明

所以我创建了一个名为'coolprojectsite'的django项目,目录结构如下所示:

* media (dir)
* mytemplates (dir)
* * admin (dir)
* * coolprojects (dir)
* coolprojectsite (dir)
* * coolproject (dir)
* * * __init__.py
* * * admin.py
* * * models.py
* * * tests.py
* * * urls.py
* * * views.py
* * __init__.py
* * settings.py
* * urls.py
Run Code Online (Sandbox Code Playgroud)

所以我有几个问题.

1)coolprojectsite被认为是'项目'

2)coolproject是否被认为是"应用程序"

3)'media'包含css,javascript文件等.这是适合他们的地方吗?它在项目之外.

4)'mytemplates'具有包含django标记的特定文件(例如{%%}),因为我的urls.py指向它们,所以它们被访问.将这些文件放在项目之外是否合适?

5)如果我想要包含一些任意的javascript文件(比如说jquery),我只是在urls.py中创建一个新条目(如果是的话,应该是coolprojectsite中的那个,还是coolproject)然后链接到那个url?

django

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

将比较运算符映射到函数调用

我正在构建用于Python中的表单验证的DSL,其中一个要求是能够指定字段应该大于或小于常量或另一个字段值.其结果是,我想运营商轻松地映射像<,>,<=并且>=将在它们的同等功能operator模块,使他们可以现场验证过程中被调用.

我意识到我可以创建一个字典来将操作符映射到函数,但是有更好的方法吗?有没有办法访问Python的内置映射?

python

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

Django查询列表

我有一个数据库,其中包含多个包含一些信息的字段的记录.

要使表中的所有数据与某个过滤器匹配,我会这样做:

records = Record.objects.filter(fieldA='a')
Run Code Online (Sandbox Code Playgroud)

我想,记录是一个QuerySet对象,包含一个记录的"列表".那是对的吗?

现在让我们说我想在一个字段中列出值.

如果我这样做:

records = Record.objects.filter(fieldA='a').only('fieldB')
Run Code Online (Sandbox Code Playgroud)

我仍然得到一个查询集,但现在它有一些延迟字段.我想要的只是我想要抓住又名字段B的值的列表.我还希望能够获取fieldB的不同值.我想我可以迭代每条记录,拉出fieldB,如果它已经存在就把它添加到列表中,就在那里,但是必须有更好的方法.

谢谢!

编辑:我认为我正在寻找的是

Record.objects.values_list('fieldB')
Run Code Online (Sandbox Code Playgroud)

python django

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

在Django Classed Based Generic View中访问request.user

如何在基于Classed的通用视图中访问request.user?

这是代码:

class TodayView(TemplateView):
    template_name = "times/today.html"
    if Records.objects.all().count() > 0:
        last_record = Records.objects.latest('id')
    else:
        last_record = None
    actual_time = datetime.today()
    activities = Activity.objects.filter(owner=request.user)

    def get_context_data(self, **kwargs):
        context = super(TodayView, self).get_context_data(**kwargs)
        context["today"] = self.actual_time

        return context
Run Code Online (Sandbox Code Playgroud)

现在,我得到错误"请求未定义",如果我写"self.request.user",我得到"自我"没有定义,这是可以理解的.我可以想到几种方法来解决这个问题,但我想知道是否存在关于如何在Django Classed Based Generic Views上访问request.user的标准化/共识.

generics django django-class-based-views

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

AttributeError:模块'tensorflow'没有属性'python'

>import tensorflow

>import tensorflow.contrib

>tensorflow.contrib

module 'tensorflow.contrib' from 'D:\\ProgramData\\Anaconda3\\lib\\site-packages\\tensorflow\\contrib\\__init__.py'

>import tensorflow.python

>tensorflow.python

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: module 'tensorflow' has no attribute 'python'
Run Code Online (Sandbox Code Playgroud)

如您所见,我在cmd(win 10)中运行此代码."import tensorflow.contrib"和"import tensorflow.python"都可以,但命令"tensorflow.contrib"和"tensorflow.python"是不同的.一个返回一个目录,另一个返回AttributeError.

有没有人知道为什么?

python attributeerror

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

pip install返回无效语法

我刚刚安装了pip附带的python 3.6

但是,在Windows命令提示符下,当我执行:'pip install bs4'时,它会在安装字下面返回'SyntaxError:invalid syntax'.

键入'python'会返回版本,这意味着它已正确安装.可能是什么问题呢?

python pip python-3.x

8
推荐指数
4
解决办法
5万
查看次数

Django 视图:request.data 什么时候是 dict 还是 QueryDict?

我在这个问题上遇到了一些麻烦,request.data 有时是一个dict(尤其是在测试时),有时是一个QueryDict实例(使用 curl 时)。

这尤其是一个问题,因为在使用 curl 调用视图时显然存在很大差异,如下所示:

curl -X POST --data "some_float=1.23456789012123123" "http://localhost:8000/myview"
Run Code Online (Sandbox Code Playgroud)

或者像这样使用 django_webtest 客户端:

class APIViewTest(WebTest):
    def test_testsomething(self):
        self.app.post(url=url, params=json.dumps({some_float=1.26356756467}))
Run Code Online (Sandbox Code Playgroud)

然后将该 QueryDict 转换为这样的字典

new_dict = dict(**request.data)
my_float = float(new_dict['some_float'])
Run Code Online (Sandbox Code Playgroud)

在测试中一切正常,因为有request.data一个dict,但在生产中,视图崩溃了,因为new_dict['some_float']实际上是一个包含一个元素的列表,而不是预期的浮点数。

我已经考虑过像这样解决这个问题:

    if type(request.data) is dict:
        new_dict = dict(**request.data)
    else:
        new_dict = dict(**request.data.dict())
Run Code Online (Sandbox Code Playgroud)

这感觉非常错误,因为测试只会测试第 2 行,并且(一些?全部?)生产代码将运行第 4 行。

因此,当我想知道为什么 QueryDict 会以这种方式运行时,我宁愿知道为什么以及何时 response.data 是 a QueryDict。以及我如何使用 django 测试来模拟这种行为。生产和测试系统有不同的条件总是很麻烦,有时是不可避免的,但在这种情况下,我觉得它可以解决。或者这是与 django_webtest 相关的特定问题?

python django django-rest-framework django-webtest

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

使用模型表单中的Generic_inlineformset_factory创建表单

我想在ModelForm的帮助下创建一个编辑表单.

我的模型包含一个通用的关系黑白类,所以如果任何人可以建议我的视图和一些模板的目的我会非常感激,因为我是该语言的新手.

我的模特看起来像: -

 class Employee(Person):
     nickname = models.CharField(_('nickname'), max_length=25, null=True,
         blank=True)
     blood_type = models.CharField(_('blood group'), max_length=3, null=True,
         blank=True, choices=BLOOD_TYPE_CHOICES)
     marital_status = models.CharField(_('marital status'), max_length=1,
         null=True, blank=True, choices=MARITAL_STATUS_CHOICES)
     nationality = CountryField(_('nationality'), default='IN', null=True,
         blank=True)
     about = models.TextField(_('about'), blank=True, null=True)
     dependent = models.ManyToManyField(Dependent,
         through='DependentRelationship')
     pan_card_number = models.CharField(_('PAN card number'), max_length=50,
         blank=True, null=True)
     policy_number = models.CharField(_('policy number'), max_length=50,
         null=True, blank=True)
     # code specific details
     user = models.OneToOneField(User, blank=True, null=True,
         verbose_name=_('user'))

 class Person(models.Model):
      """Person model""" 
      title = models.CharField(_('title'), max_length=20, null=True, blank=True)
      first_name = …
Run Code Online (Sandbox Code Playgroud)

python django

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

Python 3.2 idle:range函数 - 打印还是列表?

我知道这是错误的事情,但我使用的是python 3但是用python 2书来研究它.

它说,

>>>range(2,7)
Run Code Online (Sandbox Code Playgroud)

将会呈现

[2,3,4,5,6]
Run Code Online (Sandbox Code Playgroud)

但我知道它不会显示上面的输出,我想.所以我试过了:

>>>>print(range(2,7))
Run Code Online (Sandbox Code Playgroud)

和ta-da-它显示如下:

range(2,7)
Run Code Online (Sandbox Code Playgroud)

看起来这是从P2到P3的变化之一所以我试过:

list(range(2,7))
Run Code Online (Sandbox Code Playgroud)

这个可以在IDLE上运行正常,但在记事本上用于长编码也不行.所以最后我试过了:

print(list(range(2,7)))
Run Code Online (Sandbox Code Playgroud)

它显示出类似于我的意图...我做得对吗?这是写它的唯一方法吗?

python printing list range

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