小编die*_*us9的帖子

缺少django,nginx和gunicorn的自定义标题

免责声明:

我正在一个项目中工作,其中存在一个"庞大的"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,我不知道如何告诉它记录请求的标题.

谢谢

更新

nginx conf文件

django configuration nginx http-headers gunicorn

9
推荐指数
1
解决办法
5067
查看次数

Facebook Opengraph自定义fb登录按钮

我正在使用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,是在标签'脚本'之间?

javascript facebook opengraph

8
推荐指数
1
解决办法
3万
查看次数

在django中导入设置的奇怪错误

我有很多项目在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上

python django settings importerror django-settings

8
推荐指数
1
解决办法
1万
查看次数

Django1.4:在模板中设置语言链接以与i18n_patterns一起使用的通用方法?

我开始在Django 1.4中使用新的i18n_patterns.基本上,我希望在我的所有模板标题上为每种支持的语言提供语言链接.我已将我的标题实现为一个单独的模板,该模板包含在其他模板中.

有没有办法保持我的标题通用并解决这个问题,而不传递模板上下文中的当前视图名称或当前网址?我想这是一个问题,我如何以通用方式从模板内部检索当前视图或网址.

顺便说一句,我发现我之前用set_lang视图改变活动语言的方法将使用url_patterns打破,因为在更改语言后,它会在重定向到引用视图时将其更改回来.

任何帮助找出在模板中设置语言链接的通用方法,以通用的方式与url_patterns一起使用将不胜感激!

django localization internationalization url-pattern django-1.4

8
推荐指数
2
解决办法
2746
查看次数

Django app使用裁剪工具进行图像裁剪

我需要一个用于在客户端裁剪图像的应用程序,我的意思是,使用像Jcrop jquery插件这样的裁剪工具.

我找到了这个工具:

但最后两个取决于管理员和两个首先似乎非常耦合自己的ImageFields和模型,任何好的解决方案?

我们正在研究一个具有许多功能的大型应用程序,并且很难改变逻辑写入

django jquery crop django-apps jcrop

7
推荐指数
1
解决办法
8474
查看次数

moodle有一个django选项?

有一个像django制作的moodle平台或某种界面django/moodle?

php django moodle

5
推荐指数
1
解决办法
2064
查看次数

在appengine或非sql的django的i18n型号的任何应用程序?

我正在使用django和GAE进行项目,但我需要国际化模型,我尝试使用datatransdjango-model-i18n,但这两个应用程序在数据库中大量使用sql并且不适用于app-engine.

Theres是i18n的任何应用程序,用于模型的级别并使用非sql数据库吗?

django google-app-engine django-models internationalization nosql

5
推荐指数
1
解决办法
317
查看次数

urlpattern的正则表达式

我需要一个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)

但是我遇到了这个角色的问题 #

python regex django django-urls

4
推荐指数
1
解决办法
288
查看次数

Django 1.4 TimeField迁移在PostgreSQL上失败

我在模型上编辑了两个字段,并将它们从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)

django postgresql django-models django-south django-1.4

4
推荐指数
1
解决办法
1448
查看次数

如何在Factory Boy中与Faker一起使用lazy_attribute

上下文:我有一个带有两个日期的模型,我想同时使用两个日期,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(1.8.18)
  • 工厂男孩(2.8.1)
  • 法克(0.7.17)

python django django-models faker factory-boy

4
推荐指数
1
解决办法
1475
查看次数