小编Muh*_*hir的帖子

为什么以及何时使用Django mark_safe()函数

阅读文档后,mark_safe()似乎仍然是一个神话.我想这与CSRF有关.但是为什么以及何时使用mark_safe()?

这是文档

mark_safe(S)[来源]

将字符串明确标记为(HTML)输出目的是安全的.返回的对象可以在字符串或unicode对象适当的任何地方使用.

可以在单个字符串上多次调用.

要构建HTML片段,通常应该使用django.utils.html.format_html().

如果修改,标记为安全的字符串将再次变得不安全 例如:

django django-templates

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

Python:如何在函数的本地范围内运行eval()

我尝试在函数的局部范围内使用eval()。但是,它始终在全局范围内进行评估。

自包含的示例:

1-此代码有效:

var1 = 1
var2 = 2
var3 = 3    
myDict = dict((name, eval(name)) for name in ["var1",
                                              "var2",
                                              "var3"])
print(myDict["var1"])
Run Code Online (Sandbox Code Playgroud)

2-抛出NameErrorlvar1

def test1():
   lvar1 = 1
   lvar2 = 2
   lvar3 = 3
   myDict = dict((name, eval(name)) for name in ["lvar1",
                                                 "lvar2",
                                                 "lvar3"])
   print(myDict["lvar1"])
Run Code Online (Sandbox Code Playgroud)

3-与2相同的结果。

def test2():
    lvar1 = 1
    lvar2 = 2
    lvar3 = 3
    myDict = dict((name, eval(name), locals()) for name in ["lvar1",
                                                            "lvar2",
                                                            "lvar3"])
    print(myDict["lvar1"])
Run Code Online (Sandbox Code Playgroud)

python scope eval

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

Django 管理员,使用 DateTime 小部件在创建时设置不可编辑的日期字段

我有一个非常简单的模型定义如下:

class DateTimeRef(models.Model):
    start = models.DateTimeField(editable=False, db_index=True)
Run Code Online (Sandbox Code Playgroud)

我想允许通过 Django 管理员创建这些字段。因为该字段不可编辑,所以我读到我需要这样做:

class DateTimeRefForm(forms.ModelForm):
    start = forms.DateTimeField()

    class Meta:
        model = models.DayPart


class DateTimeRefAdmin(admin.ModelAdmin):
    form = DateTimeRefForm
    list_display = ['start']
Run Code Online (Sandbox Code Playgroud)

这将为我提供一个用于日期时间字段的简单文本输入: 在此输入图像描述

该管理员的用户不一定有技术倾向。我想让他们更容易地创建这些对象。可编辑的日期时间字段使这个时髦的小部件开箱即用:

在此输入图像描述

无论如何,我可以让我的不可编辑字段在管理站点中使用此表单小部件吗?

更新

澄清一下:当我创建记录时,我希望能够通过 Django 管理员设置此字段。我不希望该字段可以以任何其他方式编辑。

python django readonly django-forms django-admin

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

有没有一种方法可以在 forms .save() 方法中查找模型表单是否正在创建新记录或更新现有记录?

我正在做什么来知道表单是否正在创建新记录或更新现有记录是

class MyForm(forms.ModelForm):
    def save(self, commit=True):
        _new = True if not self.instance.id else False
        keyword = super(MyForm, self).save()
        if _new:
            do_something()
        return keyword
Run Code Online (Sandbox Code Playgroud)

在调用 super(MyForm, self).save() 后,是否有其他方法可以找到它,而无需在调用“super”之前明确检查它,就像我对“_new”所做的那样?

django django-forms

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

在python中找到友好数字的最有效方法是什么?

我用 Python 编写了代码来计算 10000 以下的友好数字的总和:

def amicable(a, b):
   total = 0
   result = 0
   for i in range(1, a):
      if a % i == 0:
        total += i
   for j in range(1, b):
      if b % j == 0:
        result += j
   if total == b and result == a:
        return True
   return False

sum_of_amicables = 0
for m in range (1, 10001):
    for n in range (1, 10001):
        if amicable(m, n) == True and m != n:
            sum_of_amicables = …
Run Code Online (Sandbox Code Playgroud)

numbers python-2.7

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

Gunicorn不会用WSGI运行Django

我试图用gunicorn运行我的django项目,但是收到错误.要测试我通过运行以下命令创建了所有新内容:

virtualenv test_gunicorn
source test_gunicorn/bin/activate
pip install django gunicorn
cd test_gunicorn/
mkdir projects
cd projects/
django-admin startproject test_gunicorn
cd test_gunicorn/
gunicorn test_gunicorn/wsgi:application
Run Code Online (Sandbox Code Playgroud)

但仍然得到了与原始项目相同的错误.以下是错误:

[2015-07-13 14:22:33 +0000] [9122] [INFO] Starting gunicorn 19.3.0
[2015-07-13 14:22:33 +0000] [9122] [INFO] Listening at: http://127.0.0.1:8000 (9122)
[2015-07-13 14:22:33 +0000] [9122] [INFO] Using worker: sync
[2015-07-13 14:22:33 +0000] [9127] [INFO] Booting worker with pid: 9127
[2015-07-13 14:22:33 +0000] [9127] [ERROR] Exception in worker process:
Traceback (most recent call last):
  File "/home/tahir/official/virtualenvs/test_gunicorn/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 507, in spawn_worker
    worker.init_process()
  File …
Run Code Online (Sandbox Code Playgroud)

python django django-wsgi gunicorn

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

django rest框架'QuerySet'对象没有属性'_meta'

我使用django rest框架和泛型api视图但是当我调用list api视图时它给了我AttributeError:'QuerySet'对象没有属性'_meta'错误.

下面是我的代码

models.py

class Book(models.Model):
    name = models.CharField(max_length=200, null=False, blank=False)
    cover = models.ImageField(upload_to=RenameFile('books', 'cover'), null=False, blank=False)
    author = models.ForeignKey(Author, null=False, blank=False)
    rating = models.DecimalField(decimal_places=1, max_digits=1, null=True, blank=True)
    blurb = models.TextField(null=False, blank=False)
    free_chapters = models.FileField(upload_to=RenameFile('books', 'free'), null=False, blank=False)
    free_chapters_no = models.CharField(max_length=5, null=False, blank=False)
    paid_chapters = models.FileField(upload_to=RenameFile('books', 'paid'), null=False, blank=False)
    paid_chapters_no = models.CharField(max_length=5, null=False, blank=False)
    paid_chapters_credit = models.CharField(max_length=255, null=False, blank=False)
    language = models.ForeignKey(Language, null=False, blank=False)
    genre = models.ManyToManyField(Genre)

    def __str__(self):
        return self.name

@deconstructible
class RenameFile(object):

    def __init__(self, path, …
Run Code Online (Sandbox Code Playgroud)

python django rest django-rest-framework

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