免责声明:
我正在一个项目中工作,其中存在一个"庞大的"webapp,它具有移动设备的api,因此更改api不是一种选择.
这个应用程序是很久以前开发的,有几个开发人员已经开发过了
话虽如此,问题是这样的;
在这个站点的移动api(只是视图而不是返回json数据)中,代码正在查找令牌,但在请求的标题中:
token = request.META.get('HTTP_TOKEN')
Run Code Online (Sandbox Code Playgroud)
当我在本地测试这个API时,工作正常,但在生产中没有,所以,我试着找出最新情况并发现:
django将头,甚至自定义头转换为request.META中的键,我使用urllib2和 请求测试api,生产中的问题是在生产服务器中request.META从来没有一个名为HTTP_TOKEN的键,所以,做一点debug我认真思考问题是我们为django应用程序提供服务的方式.
我们正在使用django1.3,nginx,gunicorn,virtualenvwrapper,python2.7.
我的主要嫌疑人是nginx,我认为,在某种程度上,nginx会收到标题,但不要将它转发给django,我尝试对此进行一些研究,但我只发现了有关nginx的安全头和自定义头的信息,但我找不到doc或者关于如何告诉nginx允许该标头并且不删除它的东西.
我在这里需要帮助,第一件事是测试nginx是否收到标题,但我只知道一点关于nginx,我不知道如何告诉它记录请求的标题.
谢谢
更新
我正在使用facebook开放图,新api,我可以这样做:
<fb:login-button show-faces="true" max-rows="9" perms="email" autologoutlink="true" onlogin="window.location = 'http://www.example.com/facebook/facebook_test/'"></fb:login-button>
Run Code Online (Sandbox Code Playgroud)
但当我在http://developers.facebook.com/docs/reference/javascript/FB.login中需要更多选项时,如果我阅读了doc,我说:
FB.login(function(response) {
if (response.session) {
if (response.perms) {
// user is logged in and granted some permissions.
// perms is a comma separated list of granted permissions
} else {
// user is logged in, but did not grant any permissions
}
} else {
// user is not logged in
}
}, {perms:'read_stream,publish_stream,offline_access'});
Run Code Online (Sandbox Code Playgroud)
但如果我需要另一个图像为fb按钮,如果我需要另一个东西,我找不到怎么做,在html的哪个部分我可以调用FB.login,是在标签'脚本'之间?
我有很多项目在ubuntu中使用python2.7和virtualenv/virtualenvwrapper,在我的工作中,一些开发人员使用macosx和windows,通常我像往常一样创建项目:
django-admin.py start project x
Run Code Online (Sandbox Code Playgroud)
我们使用svn作为cvs,但在某些时候,对我来说没有任何理性,当我尝试类似的东西:
python manage.py runserver
Run Code Online (Sandbox Code Playgroud)
不起作用,但只适合我,并在我的笔记本电脑,这不会发生在制作服务器或其他开发人员.
有任何想法吗?
我收到了这个错误:
错误:在包含'manage.py'的目录中找不到文件'settings.py'.看来你已经定制了东西.您必须运行django-admin.py,并将其传递给您的设置模块.(如果文件settings.py确实存在,则会以某种方式导致ImportError.)
但显然,设置文件存在并且位于manage.py文件的同一文件夹中,并且不适合我......
这也发生在django和appengine上
我开始在Django 1.4中使用新的i18n_patterns.基本上,我希望在我的所有模板标题上为每种支持的语言提供语言链接.我已将我的标题实现为一个单独的模板,该模板包含在其他模板中.
有没有办法保持我的标题通用并解决这个问题,而不传递模板上下文中的当前视图名称或当前网址?我想这是一个问题,我如何以通用方式从模板内部检索当前视图或网址.
顺便说一句,我发现我之前用set_lang视图改变活动语言的方法将使用url_patterns打破,因为在更改语言后,它会在重定向到引用视图时将其更改回来.
任何帮助找出在模板中设置语言链接的通用方法,以通用的方式与url_patterns一起使用将不胜感激!
django localization internationalization url-pattern django-1.4
我需要一个用于在客户端裁剪图像的应用程序,我的意思是,使用像Jcrop jquery插件这样的裁剪工具.
我找到了这个工具:
但最后两个取决于管理员和两个首先似乎非常耦合自己的ImageFields和模型,任何好的解决方案?
我们正在研究一个具有许多功能的大型应用程序,并且很难改变逻辑写入
我正在使用django和GAE进行项目,但我需要国际化模型,我尝试使用datatrans和django-model-i18n,但这两个应用程序在数据库中大量使用sql并且不适用于app-engine.
Theres是i18n的任何应用程序,用于模型的级别并使用非sql数据库吗?
django google-app-engine django-models internationalization nosql
我需要一个URL的正则表达式,如:
/slug/#slug/slug/
Run Code Online (Sandbox Code Playgroud)
我知道应该是这样的:
r'^(?P<slug1>[-\w]+)/#(?P<slug2>[-\w]+)/(?P<slug3>[-\w]+)/$'
Run Code Online (Sandbox Code Playgroud)
但是我遇到了这个角色的问题 #
我在模型上编辑了两个字段,并将它们从IntegerFields 更改为TimeFields:
class Model(models.Model):
start_time = models.TimeField()
end_time = models.TimeField()
Run Code Online (Sandbox Code Playgroud)
我正在使用这两个字段来保存一个天真的时间,这与任何地理时间概念无关,因此没有真正的"时区"(想想类似于比赛时间的东西).我的本地数据库是PostgreSQL.
但是,此更改生成的南迁移失败,并出现以下错误:
> main:0005_auto__chg_field_model_start_time__chg_field_model_end_time
FATAL ERROR - The following SQL query failed: ALTER TABLE "main_model" ALTER COLUMN "start_time" TYPE time, ALTER COLUMN "start_time" SET NOT NULL, ALTER COLUMN "start_time" DROP DEFAULT;
...
File ".../lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 52, in execute
return self.cursor.execute(query, args)
django.db.utils.DatabaseError: column "start_time" cannot be cast to type time without time zone
Run Code Online (Sandbox Code Playgroud)
迁移失败的原因如下:
class Migration(SchemaMigration):
def forwards(self, orm):
# Changing field 'Model.start_time'
db.alter_column('main_model', 'start_time', self.gf('django.db.models.fields.TimeField')()) …Run Code Online (Sandbox Code Playgroud) 上下文:我有一个带有两个日期的模型,我想同时使用两个日期,factory.Faker但第二个日期应始终大于第一个日期。
我尝试了这个:
模型摘录:
class Event(models.Model):
execution_start_date = models.DateTimeField()
execution_end_date = models.DateTimeField()
Run Code Online (Sandbox Code Playgroud)
厂:
class EventFactory(factory.DjangoModelFactory):
class Meta:
model = Event
strategy = factory.BUILD_STRATEGY
execution_start_date = factory.Faker('date_time_this_year', tzinfo=pytz.utc)
@factory.lazy_attribute
def execution_end_date(self):
return factory.Faker('date_time_between_dates',
datetime_start=self.execution_start_date,
datetime_end=now(),
tzinfo=pytz.utc)
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用python shell中的工厂时,得到了以下信息:
In [3]: e = EventFactory()
In [4]: e.execution_end_date
Out[4]: <factory.faker.Faker at 0x1103f51d0>
Run Code Online (Sandbox Code Playgroud)
我设法使其起作用的唯一方法是这样的:
@factory.lazy_attribute
def execution_end_date(self):
# return factory.Faker('date_time_between_dates',
# datetime_start=self.execution_start_date,
# datetime_end=now(),
# tzinfo=pytz.utc)
faker = factory.Faker._get_faker()
return faker.date_time_between_dates(datetime_start=self.execution_start_date,
datetime_end=now(),
tzinfo=pytz.utc)
Run Code Online (Sandbox Code Playgroud)
但老实说,我认为有更好的方法。
我的依赖项是:
django ×9
python ×3
django-1.4 ×2
crop ×1
django-apps ×1
django-south ×1
django-urls ×1
facebook ×1
factory-boy ×1
faker ×1
gunicorn ×1
http-headers ×1
importerror ×1
javascript ×1
jcrop ×1
jquery ×1
localization ×1
moodle ×1
nginx ×1
nosql ×1
opengraph ×1
php ×1
postgresql ×1
regex ×1
settings ×1
url-pattern ×1