我想if(function_exists("my_func")) echo 'function exists';
直接使用命令行执行单个php语句,而不必使用单独的php文件.
这怎么可能 ?
我尝试了Django的基于类的视图(CBV).
class BlahView(TemplateView):
template_name = 'blah/blah.html'
def get_context_data(self, **kwargs):
#code...
def get(self, request, **kwargs):
#more code...
Run Code Online (Sandbox Code Playgroud)
现在,我知道我可以从self.request获得请求参数.现在说我要解析这些请求参数并将它们存储在类中.我可以存放self.xxx
吗?现在,显然基于类的工作方式,这看起来很简单.
但我无法弄清楚控制的流程,看看View
(超类TemplateView
)的定义.该源提到as_view()
是"入口点"
我想在开头设置我的实例变量get_context_data()
但是在那里进行初始化似乎不对.
我可以__init__()
为我的CBV 定义一个吗?如果是这样,是否存在线程问题或多个页面访问可能与我的解析数据的全局实例一起工作?
我知道这听起来有点混乱,但我只是对CBV中的代码流感到困惑.
我有一个模型,MyModel2
用ManyToManyField
相关的另一种模式MyModel1
.
我如何获得对mymodel1.id, mymodel2.id
,如Django为这种关系创建的表中所示?我是否必须在此表上执行原始SQL查询,或者是否可以通过此模型的对象管理器进行查询?
class MyModel1(models.Model):
name = models.CharField(max_length=50)
class MyModel2(models.Model):
name = models.CharField(max_length=50)
mymodel1 = models.ManyToManyField(MyModel1)
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个保存对象的视图,但是如果引发一些异常,我想撤消该保存.这是我试过的:
class MyView(View):
@transation.atomic
def post(self, request, *args, **kwargs):
try:
some_object = SomeModel(...)
some_object.save()
if something:
raise exception.NotAcceptable()
# When the workflow comes into this condition, I think the previous save should be undome
# Whant am I missing?
except exception.NotAcceptable, e:
# do something
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?即使引发异常some_object
仍然在DataBase中.
我们假设我有以下模型:
class Position(models.Model):
name = models.CharField()
class PositionStats(models.Model):
position = models.ForeignKey(Position)
averageYards = models.CharField()
averageCatches = models.CharField()
class PlayerStats(models.Model):
player = models.ForeignKey(Player)
averageYards = models.CharField()
averageCatches = models.CharField()
class Player(models.Model):
name = models.CharField()
position = models.ForeignKey(Position)
Run Code Online (Sandbox Code Playgroud)
我想使用django的ORM执行等效的SQL查询:
SELECT *
FROM PlayerStats
JOIN Player ON player
JOIN PositionStats ON PositionStats.position = Player.position
Run Code Online (Sandbox Code Playgroud)
我怎么能用django的ORM做到这一点?查询是不完全正确的,但这个想法是我想要一个单一的查询,使用Django的ORM,这给了我PlayerStats
加入了与PositionStats
基于玩家的位置.
这是一个通用的架构问题.我在许多地方读到,在MVC框架中,(1)模型应该很胖,控制器应该是瘦的.但我也读到(2)细节取决于你正在开发的框架.那么,如果你在django中开发呢?
我对django的经验是,很多逻辑最终会被放入视图和表单中.不是"业务逻辑",而是处理请求,会话等的细节.在代码行方面,这些细节往往超过操纵模型对象的业务逻辑.我做错了什么,或者这是django的工作方式?
PyCharm为Django测试目标提供了"Run with Coverage"操作.这将运行测试,但显示零测试覆盖率(0%文件,项目窗格中未涵盖,编辑器中全部为红色).选中或取消选中"使用捆绑的coverage.py"没有任何区别.
从CLI运行相同的测试会得到预期的结果:
$ coverage --version
Coverage.py, version 3.5.1. http://nedbatchelder.com/code/coverage
$ coverage run ./manage.py test blackbox
Creating test database for alias 'default'...
....
----------------------------------------------------------------------
Ran 4 tests in 0.002s
OK
Destroying test database for alias 'default'...
$ coverage report
Name Stmts Miss Cover
---------------------------------------------
__init__ 0 0 100%
blackbox/__init__ 0 0 100%
blackbox/models 5 0 100%
blackbox/rules/__init__ 1 0 100%
blackbox/rules/board 62 19 69%
blackbox/tests 49 6 88%
manage 11 4 64%
settings 24 0 100%
---------------------------------------------
TOTAL 152 …
Run Code Online (Sandbox Code Playgroud) 嗨Stackoverflow人,
我用GeoDjango做了我的第一步,我正在寻找更好的选项来检查错误的sql语句.
到目前为止,我只是想在postgresql表中保护lng + lat点.
该模型定义为:
geolocation = models.PointField(_('Geo Location'),
geography=True,
null = True,
blank = True,
help_text=_('Geolocation with Longitude and Latitude'))
objects = models.GeoManager()
Run Code Online (Sandbox Code Playgroud)
在我看来,我尝试执行以下命令
savedProject.geolocation = GEOSGeometry('POINT(%s %s)' %(u_lng,u_lat))
Run Code Online (Sandbox Code Playgroud)
但是当我尝试保存表单时收到以下错误:
异常类型:InternalError异常值:当前事务被中止,命令被忽略,直到事务块结束
这个错误的原因是什么?我相信sql语句可能有问题,但检查的最佳方法是什么?Django只提供一般错误消息"内部错误".
感谢您的帮助和建议!
我有两个相同长度的列表对象,我希望渲染的补充数据有一种方法可以同时渲染两者,即.
{% for i,j in table, total %}
{{ i }}
{{ j }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
或类似的东西?
我是python中的新手.今天当我写一些搜索功能时遇到错误.我使用sqlalchemy orm来做到这一点,在我的函数中,我输入一个中文单词作为关键词.html页面给我一个UnicodeEncodeError在/ user/search:'latin-1'编解码器不能编码位置0-1中的字符:序数不在范围内(256).我的代码是这样的:
def user_search(request):
name = request.GET.get('name').strip()
user_list = list()
if name:
user_list = User.get_by_name(name)
class User(object):
@classmethod
def get_by_name(cls, name):
return DBSession.query(cls).filter(cls.name==name)
Run Code Online (Sandbox Code Playgroud)
Traceback在这里:
Traceback:
File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/base.py" in get_response
111. response = callback(request, *callback_args, **callback_kwargs)
File "/home/jiankong/git/admin-server/lib/decorators.py" in wrapper
75. return func(request, *args, **kwargs)
File "/home/jiankong/git/admin-server/lib/decorators.py" in wrapper
39. output = function(request, *args, **kwargs)
File "/home/jiankong/git/admin-server/apps/user/user_views.py" in user_search
47. users = jump_page(paginator, page)
File "/home/jiankong/git/admin-server/apps/user/utils.py" in jump_page
92. return paginator.page(1)
File "/usr/local/lib/python2.6/dist-packages/django/core/paginator.py" in page
37. number = self.validate_number(number)
File …
Run Code Online (Sandbox Code Playgroud) django ×9
python ×9
postgresql ×2
atomicity ×1
command-line ×1
database ×1
django-views ×1
function ×1
geodjango ×1
latin1 ×1
linux ×1
many-to-many ×1
mysql-python ×1
orm ×1
php ×1
postgis ×1
pycharm ×1
shell ×1
sqlalchemy ×1
transactions ×1