小编Dus*_*att的帖子

如何使用在Heroku/OpenShift/etc上具有硬编码相对路径的django来提供静态文件?

我有第三方提供的HTML/JS/CSS文件(我无法控制),它作为单页面应用程序与使用Django和django-rest-framework构建的后端进行通信.

我想在Heroku上托管这个,因此这些静态资产由Django提供服务.这些文件包含彼此的相对路径.例如,index.html包含:

<link rel="stylesheet" type="text/css" media="screen" href="styles/css/bootstrap.min.css">
Run Code Online (Sandbox Code Playgroud)

这导致404因为styles/css/bootstrap.min.css没有被django路由.

我知道从我的域根目录提供index.html的唯一方法www.domain.com是使用url配置:

url(r'^$', TemplateView.as_view(template_name='index.html'), name='home'),
Run Code Online (Sandbox Code Playgroud)

...即使它不是真正的模板,它只是简单的HTML.

问题出在这样一个事实,即其他资产中的所有网址都与此相关index.html,当然Django不会那样工作.如果我正在开发这个前端应用程序,我将使用static模板标记和各种方法之一来获取javascript的URL.

如果他们提供这个问题的解决方案,我不介意从Heroku切换到另一个PaaS,但手动编辑所有这些文件听起来不是一个有趣的工作...特别是考虑到我将接收这些文件的更新这一事实往前走.

认为在常规旧服务器上解决此问题的方法是配置Web服务器以正确解析这些URL,但Heroku上似乎没有该选项.

django heroku paas

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

如何使用 Heroku 上的 Django 将位于 URL 的图像保存到 S3?

我正在将 django-storages 用于 Heroku 上托管的项目。我已经配置了 django-storages,现在可以很好地从 S3 提供静态文件。

我想以编程方式获取位于 URL 的图像并将其上传到 S3 并将其与模型相关联。

我知道如何使用 urlib2 或 requests 从 url 下载文件。

我想知道的是如何最好地将该图像放到 S3 上并让我可以将其与我的模型和相关模板一起使用。文件大小不确定,但可能总是小于 10MB。

我的问题归结为:

  • 如何将位于 url 的图像放到 S3 上?
  • 一旦图像在 S3 上,我如何将该图像与模型相关联?
  • 由于 Heroku 的任何固有限制,有没有办法避免保存到 Heroku 存储并将文件“流”到 S3……或者这不是问题吗?

django heroku amazon-s3 django-storage

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

如何在django-rest-framework中设置权限,以便会话用户只能列出具有该用户外键的对象?

我有这样的模特:

class TheModel(models.Model):
    name = models.CharField(max_length=10)
    owner = models.ForeignKey(settings.AUTH_USER_MODEL)
Run Code Online (Sandbox Code Playgroud)

我想创建一个API视图,列出所有等于的TheModel对象.TheModel.ownerrequest.user

我想我可以通过覆盖来做到这一点get_queryset,但似乎我应该使用自定义BasePermission.问题是它看起来不像BasePermission.has_object_permission在列表视图中的每个对象上运行.唯一可以运行的是BasePermission.has_permission.我测试了这个: -

class TheModelViewSet(viewsets.ModelViewSet):
    model = TheModel
    permission_classes = [IsOwner]

class IsOwner(permissions.BasePermission):
    def has_permission(self, request, view):
        print("checking has permission for {}".format(request.user))
        return True

    def has_object_permission(self, request, view, obj):
        print("checking permission for {} on {}").format(request.user, obj.user)

        return obj.owner == request.user
Run Code Online (Sandbox Code Playgroud)

印刷的唯一东西是来自的东西IsOwner.has_permission.

也许我只是在思考它而我应该只使用自定义查询集而不是使用权限?

python django django-rest-framework

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

使用 Django REST Framework 时,当序列化器嵌套时如何排除父级?

我觉得这可能在文档中,但我似乎无法弄清楚。

如果我有一个包含外键的序列化程序,fields当该序列化程序嵌套在相关对象中时,如何排除该 FK?

class EmployerSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Employer
        fields = ('name', 'person')

class PersonSerializer(serializers.HyperlinkedModelSerializer):
    employers = EmployerSerializer()

    class Meta:
        model = Person
        fields = ('name', 'employers')
        depth = 1
Run Code Online (Sandbox Code Playgroud)

当我点击 API 时,http://0.0.0.0:8000/person/1/它会列出如下内容:

{
    "name": "Joe Blow",
    "employers": {
        "name": "Acme Inc."
        "person": "http://0.0.0.0:8000/person/1/"
        }
}
Run Code Online (Sandbox Code Playgroud)

“employers”的“person”键是自引用且冗余的,但仅当序列化器嵌套在它所引用的对象内时才有效。

当序列化器嵌套时,似乎应该有一个选项来排除它,但我无法弄清楚。

python django django-rest-framework

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

如何在Python中重新创建这个PHP代码?

我找到了一个PHP脚本,让我做什么,我问这个太问题.我可以很好地使用它,但出于好奇,我想在Python中重新创建以下代码.

我当然可以使用urllib2来获取页面,但是我对如何处理cookie感到茫然,因为机械化(在Windows上使用Python 2.5和2.6以及在Ubuntu上使用Python 2.5进行测试...所有使用最新的机械化版本)似乎打破页面.我怎么在python中这样做?

require_once "HTTP/Request.php";

$req = &new HTTP_Request('https://steamcommunity.com');
$req->setMethod(HTTP_REQUEST_METHOD_POST);

$req->addPostData("action", "doLogin");
$req->addPostData("goto", "");

$req->addPostData("steamAccountName", ACC_NAME);
$req->addPostData("steamPassword", ACC_PASS);

echo "Login: ";

$res = $req->sendRequest();
if (PEAR::isError($res))
  die($res->getMessage());

$cookies = $req->getResponseCookies();
if ( !$cookies )
  die("fail\n");

echo "pass\n";

foreach($cookies as $cookie)
  $req->addCookie($cookie['name'],$cookie['value']);
Run Code Online (Sandbox Code Playgroud)

php python forms automation http

0
推荐指数
2
解决办法
519
查看次数