我正在编写一个继承自ListView的视图,并试图将视图限制为登录用户.
https://docs.djangoproject.com/en/dev/topics/class-based-views/#decorating-in-urlconf说在URLconf中使用login_required进行装饰"在每个实例的基础上应用装饰器.如果你想要的话要装饰的每个视图实例,你需要采取不同的方法" - 这种方法是在视图代码中装饰调度方法.
我以为我知道一个类和一个实例之间的区别,但这句话对我来说没有任何意义.有人可以澄清吗?除了在URLconf中设置装饰器而不是在类定义中,这两种方法之间有什么区别?
该链接上面的段落似乎回答了这样一个问题:"由于基于类的视图不是函数,因此根据您是使用as_view还是创建子类,装饰它们的工作方式会有所不同."
真??我似乎能够使用我的子类ListView的URLconf方法.
当我使用来自django.template的Context时,我在这里遇到了一些令人困惑的情况.
以下适用于python shell:
>>> from django.template import Context, Template
>>> b=Template('TEST').render(Context())
>>> print b
TEST
Run Code Online (Sandbox Code Playgroud)
当我在单元测试中使用相同的代码时,我得到以下错误:
Traceback (most recent call last):
File "/newsletterapi/tests.py", line 25, in setUp
b = Template('TEST').render(Context())
File "/opt/python2.7/lib/python2.7/site-packages/django/template/base.py", line 121, in render
context.render_context.push()
AttributeError: 'Context' object has no attribute 'render_context'
Run Code Online (Sandbox Code Playgroud)
unittest看起来像这样:
from django.test import TestCase
from myproject.newsletterapi.models import Newsletter
from django.utils.termcolors import colorize
from django.db import IntegrityError
from django.template import Template, Context
import random
import datetime
from decimal import *
import string
class NewsletterTest(TestCase):
def setUp(self): …Run Code Online (Sandbox Code Playgroud) 我之前问过这个问题.可能是由于缺乏理想的答案,我再次以此为契机,在这个空间以一种美好的方式解释我的问题.
请注意:我使用的是MySQL数据库
我有一个名为City的模型.它包含id,name.
id name
1 New York
2 New India
3 New USA
4 New UK
Run Code Online (Sandbox Code Playgroud)
现在使用以下语法
请注意:作为示例,我在下面的语法中输入静态值,即New.最后它应该是动态价值.
City.objects.filter(name__icontains = "新")
显然我得到了纽约,新印度,新美国,新英国
从这一点来说,我很好.
现在转移到我的问题.我想只过滤纽约市的名字.用户可以通过其他方式键入newyork(或)New York(或)NEWYORK(或)NEY yOrk(或),但最后我必须从模型字段值中删除空格并获得所需的结果.
City.objects.filter(name__iregex= "newyork") ?// How to fix this one
CURRENT OUTPUT is:
[]
DESIRED OUTPUT is:
New York
Run Code Online (Sandbox Code Playgroud)