阅读文档后,mark_safe()似乎仍然是一个神话.我想这与CSRF有关.但是为什么以及何时使用mark_safe()?
这是文档
mark_safe(S)[来源]
将字符串明确标记为(HTML)输出目的是安全的.返回的对象可以在字符串或unicode对象适当的任何地方使用.
可以在单个字符串上多次调用.
要构建HTML片段,通常应该使用django.utils.html.format_html().
如果修改,标记为安全的字符串将再次变得不安全 例如:
我尝试在函数的局部范围内使用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-抛出NameError为lvar1
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) 我有一个非常简单的模型定义如下:
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 管理员设置此字段。我不希望该字段可以以任何其他方式编辑。
我正在做什么来知道表单是否正在创建新记录或更新现有记录是
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”所做的那样?
我用 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) 我试图用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) 我使用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) django ×5
python ×4
django-forms ×2
django-admin ×1
django-wsgi ×1
eval ×1
gunicorn ×1
numbers ×1
python-2.7 ×1
readonly ×1
rest ×1
scope ×1