小编Arm*_*ués的帖子

如何使用django-storages和Amazon S3设置Django项目,但是对于静态文件和媒体文件有不同的文件夹?

我正在配置一个Django项目,该项目使用服务器文件系统来存储应用程序静态文件(STATIC_ROOT)和用户上传的文件(MEDIA_ROOT).

我现在需要在亚马逊的S3上托管所有内容,所以我为此创建了一个存储桶.使用django-storagesboto存储后端,我设法收集静态上传到S3斗:

MEDIA_ROOT = '/media/'
STATIC_ROOT = '/static/'

DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
AWS_ACCESS_KEY_ID = 'KEY_ID...'
AWS_SECRET_ACCESS_KEY = 'ACCESS_KEY...'
AWS_STORAGE_BUCKET_NAME = 'bucket-name'
STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
Run Code Online (Sandbox Code Playgroud)

然后,我遇到了一个问题:MEDIA_ROOT并且STATIC_ROOT没有在存储桶中使用,因此存储桶根目录包含静态文件和用户上载的路径.

那么我可以设置:

S3_URL = 'http://s3.amazonaws.com/%s' % AWS_STORAGE_BUCKET_NAME
STATIC_URL = S3_URL + STATIC_ROOT
MEDIA_URL = 'S3_URL + MEDIA_ROOT
Run Code Online (Sandbox Code Playgroud)

并在模板中使用这些设置,但在S3中存储时,静态/媒体文件没有区别django-storages.

怎么做到这一点?

谢谢!

django amazon-s3 static-files django-settings django-storage

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

使用Django的新i18n_patterns:如何回退到设置模块中指定的默认语言?

我正在使用i18n_patternsDjango 1.4 的新功能:

from django.conf.urls import patterns, include, url
from django.conf.urls.i18n import i18n_patterns

from django.contrib import admin
admin.autodiscover()

urlpatterns += i18n_patterns('',
    url(r'^admin/', include(admin.site.urls)),
)
Run Code Online (Sandbox Code Playgroud)

它适用于所有活动语言:

/en/admin/ # Ok
/es/admin/ # Ok
Run Code Online (Sandbox Code Playgroud)

但这失败了:

/admin/ # 404 Not found
Run Code Online (Sandbox Code Playgroud)

如何避免404错误并重定向到所请求URL的语言前缀版本(不仅仅是管理面板)?

是编写自定义中间件的解决方案吗?为什么在Django中默认不会出现这种情况?

python django url-routing internationalization urlconf

10
推荐指数
1
解决办法
6700
查看次数

如果GoogleFont服务不可用,如何加载自托管字体文件?

我想使用Google Fonts目录中的字体集合.我选择了样式并link在项目模板中包含CSS 标记.

或者,使用谷歌字体,您也可以下载该集合,你得到的是一个包含所有字体样式的zip文件.

我可以创建一个与Google允许我在HTML中包含的CSS相当的CSS,因此如果访问者无法访问Google Font API,我想提供自托管字体文件作为后备.

如何设置此功能,并防止下载Google字体文件和自托管字体文件?如果用户可以访问Google字体,则浏览器不应下载该字体的自托管版本.

html css fonts typography google-font-api

9
推荐指数
2
解决办法
5418
查看次数

如何根据当前对象字段值显示不同的内联

给定一个名为MainModela和a 的模型RelatedModel,其中后者有一个ForeignKey字段MainModel:

class MainModel(models.Model):
    name = models.CharField(max_length=50)
    type = models.BooleanField()

class RelatedModel1(models.Model):
    main = models.ForeingKey(MainModel):
    name = models.CharField(max_length=50)

class RelatedModel2(models.Model):
    main = models.ForeingKey(MainModel):
    name = models.CharField(max_length=50)
Run Code Online (Sandbox Code Playgroud)

和相应的ModelAdmin类:

class RelatedModel1InlineAdmin(admin.TabularInline):
    model = RelatedModel1

class RelatedModel2InlineAdmin(admin.TabularInline):
    model = RelatedModel2

class MainModel(admin.ModelAdmin):
    inlines = [RelatedModel1, RelatedModel2]
Run Code Online (Sandbox Code Playgroud)

这是默认行为,你得到两个内联,每个相关模型一个.现在的问题是如何完全隐藏所有的内联的时候MainModel正在创建实例(ModelAdminadd_view),并显示了内联RelatedModel1type的现场MainModel实例True,并显示了内联RelatedModel2False.

我打算为属性创建一个描述符ModelAdmin.inline_instances,但我意识到我需要访问正在编辑的对象实例,但它作为参数传递.

有帮助吗?

谢谢!

django django-admin inline-formset

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

如何使用带有下划线模板的HTML minifier

我有一些模板用于我的前端代码,例如:

<div class="row">
    <div class="my-header col-md-1">
        <!-- comments -->
        {{ title }}
    </div>
    <div class="my-container col-md-11">
    {% if (content) { %}
        {{ content }}
    {% } else { %}
       <p>Empty</p> 
    {% } %}
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我正在使用grunt-contrib-jst将它们全部存储在一个文件中,然后在另一个构建步骤中将包含在单个JS文件中,并将该文件推送到CDN.这部分工作正常,但我想使用该processContent选项来缩小HTML模板代码,其中包含Undercore模板分隔符(<%...%>替换为{% ... %},<%= ... %>替换为{{ ... }}).

我想使用html-minifier,但它实际上并没有最小化任何东西,显然是因为它试图将模板解析为仅HTML(并且由于模板标记而失败).

是否有任何Node包/功能允许我最小化这种模板?我想在源模板中使用注释和空格,但在生成的构建文件中删除所有不必要的内容.

现在我在我的JST设置上有这个:

processContent: function (content) {
    return content
        .replace(/^[\x20\t]+/mg, '')
        .replace(/[\x20\t]+$/mg, '')
        .replace(/^[\r\n]+/, '')
        .replace(/[\r\n]*$/, '\n');
},
...
Run Code Online (Sandbox Code Playgroud)

但我想尽可能减少一切,这就是为什么我尝试使用html-minifier.

谢谢!

javascript templates minimize gruntjs underscore.js-templating

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

Django Admin:检测对象字段的子集是否已更改以及哪些更改

我需要检测管理员中某些模型的某些字段何时发生了变化,以便稍后根据更改的字段和这些字段的上一个/当前值发送通知.

我试着用ModelForm和重写save()方法,但形式的self.cleaned_dataseld.instance已有的字段的新值.

django django-models django-forms django-admin

7
推荐指数
2
解决办法
2267
查看次数

为什么django-lint告诉我`auto_now_add`已被弃用?

嗨伙伴Djangonauts:

我用django-lint检查了我的项目,它产生了:

W:211,16:MyModel: timestamp: Uses superceded auto_now or auto_now_add
Run Code Online (Sandbox Code Playgroud)

提交信息:

auto_now/auto_now_add not technically deprecated, but they still suck.
Run Code Online (Sandbox Code Playgroud)

为什么他们说auto_now/auto_now_add"吮吸"?使用这两个字段参数实现创建/上次更新的模式没有问题.

这种模式有更好的方法吗?自定义字段类?为什么(如果这种方法更好)它还没有被集成到Django中?

python django datetime pylint last-modified

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

Django&South:在数据迁移中执行obj.save()时不执行自定义字段方法

在我的Django模型中,我有两个字段name(常规CharField)和slug一个自定义字段,它根据字段定义中传递的字段名称生成slug,在这种情况下我用name它.

首先,该模型只有该name字段,具有相应的迁移和所有.然后我需要添加slug字段,因此遵循南方惯例,我添加了slug字段unique=False,创建模式迁移,然后创建数据迁移,设置unique=True并为最后一次更改创建另一个迁移.

由于slug的值是在模型保存上生成的,在forwards数据迁移的方法中,我所做的是迭代返回的查询集orm['myapp.MyModel'].objects.all()save()在每个实例上调用方法.

但是从未产生slug字段的价值.在IPython会话下,我做了同样的事情,但引用模型from myapp.models import MyModel,并且工作.使用一些调试语句,打印type由South的orm dict返回的模型显示真实的类,它似乎不是由南方动态构建的假模型.

slug字段在pre_save方法时创建它的值.如何强制在数据迁移期间调用它?我需要确保值的唯一性,以便在以后的模式迁移中应用索引时,列不包含重复值.

谢谢!

BTW:slug字段类确实定义了south_field_triple所以南方玩得很好.

编辑:请看我的答案.但更像是一个答案,感觉更像是一个黑客.有没有更好/正确的方法来做到这一点?

migration django unique-key django-south custom-fields

6
推荐指数
1
解决办法
1201
查看次数

Django翻译和gettext:%(字符串插值)运算符的弃用

虽然Django Django还不支持Python 3,但它最终会支持Python,所以我想让我的代码更加"面向未来".

从Python 2.7开始,字符串插值运算符(%)被弃用.我意识到需要翻译的每个字符串都使用%插值语法.在Django文档中没有提到新str.format方法(字符串格式化的"新"官方方式)......

也许存在gettext库的限制,但我不这么认为,因为字符串在.PO文件中看起来相同.

问题是我是否可以使用新的字符串format方法进行翻译.

旧方式:

class Post(models.Model):
    title = models.CharField(max_length=50)
    date = models.DateField()
    # ...
    def __unicode__(self):
        return _('%(title)s (%(date)s)') % {
            'title': self.title,
            'date': self.date,
        }
Run Code Online (Sandbox Code Playgroud)

"新"方式:

class Post(models.Model):
    title = models.CharField(max_length=50)
    date = models.DateField()
    # ...
    def __unicode__(self):
        return _('{title} ({date})').format(
            title=self.title,
            date=self.date,
        )
Run Code Online (Sandbox Code Playgroud)

此外,ugettext_lazy并不真正返回字符串,而是Promises仅在需要时评估的对象.

string django internationalization deprecated string-interpolation

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

Python:使用Hachoir,如何提取文件类对象的元数据?

我正在使用用户上传视频和音频文件的网站,我上传时,必须从文件中填充一些常见的元数据字段.我找到了Hachoir并且看起来很好,但是有问题的是,为元数据读取创建解析器,需要的是文件名,而不是文件类或流对象.

现在我正在使用Django进行Web开发,我想继续使用FileStorage API,因此可以很好地将文件上传到CDN.

如何使用Hachoir文件像对象?它们提供的示例代码有效,但仅适用于"真实"文件.

python django metadata stream hachoir-parser

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

为什么`let true = false`失败了,是否真的可以做到这一点?

是否有可能使这项工作?我原本想看看是否true可以重新定义,然后我看到true实际上是一个关键字.

是否有可能"修复"模式错误并获得"你不能分配给关键字错误"?

fn main() {
    let true = false;
}
Run Code Online (Sandbox Code Playgroud)

我明白了:

error[E0005]: refutable pattern in local binding: `false` not covered
 --> src/main.rs:2:9
  |
2 |     let true = false;
  |         ^^^^ pattern `false` not covered
Run Code Online (Sandbox Code Playgroud)

操场

pattern-matching keyword rust

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