我希望我的网址不区分大小写.在使用通用视图时,将(?i)添加到urls.py中正则表达式的开头并不完全有效.
这是我想关注的网址:
url(r'^(?i)(?P<year>\d{4})/(?P<month>[a-z]{3})/(?P<day>\w{1,2})/(?P<slug>[-A-Za-z0-9_]+)/$', BlogDateDetailView.as_view(model=Entry,
queryset=Entry.objects.all(),
date_field='pub_date',
slug_field='slug',
)),
Run Code Online (Sandbox Code Playgroud)
以下工作:
http://mysite.com/2012/jan/24/my-article
http://mysite.com/2012/JAN/24/my-article
Run Code Online (Sandbox Code Playgroud)
以下不起作用(即我得到404):
http://mysite.com/2012/jan/24/My-Article
Run Code Online (Sandbox Code Playgroud)
我认为它不起作用的原因是因为slug的查询查询区分大小写.为了使这项工作,我相信我需要子类(不确定这是否是正确的术语),class SingleObjectMixin(object):因为这是queryset = queryset.filter(**{slug_field: slug})发生的地方.也许我应该继承get_queryset().
我很欣赏有关如何在django 1.3中干净利落地做一些指导
我正在运行fabric来自动部署.这很痛苦.
我的当地环境:
(somenv)bob@sh ~/code/somenv/somenv/fabfile $ > uname -a
Darwin sh.local 12.4.0 Darwin Kernel Version 12.4.0: Wed May 1 17:57:12 PDT 2013; root:xnu-2050.24.15~1/RELEASE_X86_64 x86_64
Run Code Online (Sandbox Code Playgroud)
我的fab档案:
#!/usr/bin/env python
import logging
import paramiko as ssh
from fabric.api import env, run
env.hosts = [ 'examplesite']
env.use_ssh_config = True
#env.forward_agent = True
logging.basicConfig(level=logging.INFO)
ssh.util.log_to_file('/tmp/paramiko.log')
def uptime():
run('uptime')
Run Code Online (Sandbox Code Playgroud)
以下是调试日志的一部分:
(somenv)bob@sh ~/code/somenv/somenv/fabfile $ > date;fab -f /Users/bob/code/somenv/somenv/fabfile/pefabfile.py uptime
Sun Aug 11 22:25:03 EDT 2013
[examplesite] Executing task 'uptime'
[examplesite] run: uptime
DEB [20130811-22:25:23.610] thr=1 paramiko.transport: starting thread …Run Code Online (Sandbox Code Playgroud) 我正在django网络应用程序上工作,该应用程序具有需要很长时间才能返回的功能(例如,sync_files())。当我使用gevent时,运行sync_file()时我的应用程序不会阻塞,其他客户端可以正常连接并与Webapp交互。
我的目标是让Webapp响应其他客户端,而不是阻止。我不希望有成千上万的用户连接到我的Web应用程序(也许最多20个连接),并且我不想将其设置为下一个Twitter。我的应用程序在vps上运行,因此我需要一些重量轻的东西。
因此,在上述情况下,使用gevent时使用celery是否多余?使用芹菜有特别的优势吗?我宁愿不使用celery,因为它是另一种将在我的计算机上运行的服务。
编辑:发现芹菜可以在gevent上运行工作者池。我认为我对事件与芹菜之间的关系更加不确定。
我的面料文件:
def deploy():
code_path = 'mysite/public_html/mysite'
with cd(code_path):
with prefix("workon mysite"):
run('git pull')
run('supervisorctl -c ~/supervisord.conf restart ' + env.host_string)
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Aborting.
[myserv] out: /bin/bash: workon: command not found
Run Code Online (Sandbox Code Playgroud)
显然,当我手动执行(没有结构)时,workon命令有效.我怀疑/usr/local/bin/virtualenvwrapper.sh是不是来源(通常是通过.bash_profile运行).
我需要做什么才能让workon命令工作?
我有一个使用redis的django项目(在redis中只有一个db).
目前我这样做:
在我的settings.py文件中,我有:
from redis import Redis
REDIS_CONNECTION = Redis()
Run Code Online (Sandbox Code Playgroud)
无论何时我想调用此连接(在项目中不同应用程序中的许多views.py文件中)我这样做:
from django.conf import settings
settings.REDIS_CONNECTION.lpush("testlist", "hello")
Run Code Online (Sandbox Code Playgroud)
这种方法有问题吗?如果没有必要,我不想继续创建与redis的新连接.
我需要将数据从MSSQL(Microsoft SQL Server)传输到MySQL,对我而言,最好的选择是编写一个Python脚本,该数据从MSSQL以csv格式导出数据,然后将该csv导入mysql。到目前为止,这个过程对我来说运作良好(而且我没有在寻找其他方法来执行此操作)。
从MSSQL到MySQL的数据类型转换是这样完成的:
MSSQL_MySQL_MAP = {
'nvarchar' : 'varchar',
'varchar' : 'varchar',
'bit' : 'boolean',
'smallint' : 'smallint',
'int' : 'int',
'datetime' : 'datetime',
'timestamp' : 'datetime',
'ntext' : 'longtext',
'real' : 'double',
'image' : 'BLOB',
'float' : 'float',
'money' : 'decimal',
}
Run Code Online (Sandbox Code Playgroud)
使用以下命令将导出的csv导入MySQL。
"""LOAD DATA INFILE '%s/%s' REPLACE INTO TABLE %s FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"'"""
Run Code Online (Sandbox Code Playgroud)
我有一种情况,MSSQL中有一个“位”数据类型,并且导出的CSV包含一个True of False字符串,如下所示:
22294,501,q4h,12 ,False,False,None,False,None,None,None,0,None,None
Run Code Online (Sandbox Code Playgroud)
使MySQL理解True或False字符串是布尔值1或0并正确导入它的最佳方法是什么?目前,我收到以下警告:
Warning: Incorrect integer value: 'False' for column 'system_code' at row 7
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以传递一些参数以及可以实现此目的的加载文件中数据?
我使用websocket-client连接到node.js服务器(这是我的websocket服务器),我已经能够通过websockets从python成功发送消息到node.js.
我的python客户端使用请求模块登录网站并收集cookie(由于成功登录而从服务器传递).我想作为代码所示这些cookie为的WebSocket客户端的一部分传递在这里.
我从登录中获得以下cookie:
(Pdb) requests.utils.dict_from_cookiejar(client.cookies)
{'csrftoken': 'DhSf0z9Ouu5f1SbfGWBg5BuBe1UuJMLr', 'sessionid': 'pu6ig4z4mtq5k8rvm6kuv8g3fdegs47d'}
Run Code Online (Sandbox Code Playgroud)
我在创建websocket时如何发送cookie?
ws = websocket.WebSocketApp("ws://localhost:8080/",
on_message = on_message,
on_error = on_error,
on_close = on_close,
# cookie = ? what goes here ?
)
Run Code Online (Sandbox Code Playgroud) 我已经得到了基于Creatview()类的函数.提交成功后,它已经有数据并显示"成功"页面.
我想以这种方式改变这种行为:当CreateView()成功时,我希望数据得到验证,但不能保存.我不想进入成功页面,而是想使用DetailView()类来显示新创建的实例,这样用户就可以看到最终保存数据时的样子.
一旦用户对显示的数据感到满意,用户可以单击"保存",在这种情况下保存数据并完成CreateView()或用户可以单击"重新编辑",然后返回到表单进行更改数据然后使用DetailView()显示新创建的实例(并重复直到用户满意为止).使用基于类的视图优雅地执行此操作的最佳方法是什么?
from django.views.generic.edit import CreateView
from restaurant.models import Restaurant
from restaurant.forms import RestaurantForm
import uuid
class RestaurantCreate(CreateView):
form_class = RestaurantForm
template_name = 'restaurant_form.html'
model = Restaurant
def form_valid(self, form):
form.instance.created_by = self.request.user
form.instance.life_id = str(uuid.uuid1())
return super(RestaurantCreate, self).form_valid(form)
Run Code Online (Sandbox Code Playgroud)
另外,我知道表单向导,但我没有多页表单.即使我忽略了这一点,表单向导也没有机会在最终保存之前预览数据.
编辑:关于谷歌群组的相关讨论,但没有解决方案