小编Bas*_*deh的帖子

上传大文件到AWS S3存储和Django在Heroku上没有30多岁的请求超时

我有一个django应用程序,允许用户上传视频.它托管在Heroku上,以及存储在S3 Bucket上的上传文件.在从Django app获得预先签名的请求后,我使用JavaScript直接将文件上传到S3.这是由于Heroku 30s请求超时.无论如何,我可以通过Django后端上传大文件而不使用JavaScript并破坏用户体验吗?

python django heroku amazon-s3 large-files

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

在使用 UUID 字段作为主字段的 Django 模型中添加非主键 AutoField 或“串行”字段

我正在构建一个以 UUIDField 作为主键的模型。但我的用例需要。也有一个自动增量字段。Django 提供了一个 AutoField。但是需要有 primary_key=True ,在我的情况下我不想要,因为我使用 UUIDField 作为primary_key。

我尝试创建一个字段并赋予 db_type 'serial' 并添加一个迁移,该迁移改变了在 100000 处重新启动的序列.. 使用 Admin 向数据库添加对象将始终将数字字段存储为空值。如果我删除 null=True。然后保存将失败,因为它需要数字字段的值。

如何在保持 UUIDField 作为主键的同时使数字字段递增?

fields.py

class SerialField(models.Field):
    description = _("BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE")

    empty_strings_allowed = False

    default_error_messages = {
        'invalid': _("'%(value)s' value must be an integer."),
    }

    def __init__(self, *args, **kwargs):
        kwargs['blank'] = True
        super().__init__(*args, **kwargs)

    def db_type(self, connection):
        return 'serial'
Run Code Online (Sandbox Code Playgroud)

models.py

from .fields import SerialField

class MyModel(models.Model):
    uuid = models.UUIDField(
        verbose_name=_("UUID Identifier"),
        primary_key=True,
        default=uuid.uuid4,
        editable=False,
        help_text=_("Requried, PrimaryKey none-editable"),
        db_index=True, …
Run Code Online (Sandbox Code Playgroud)

python database migration django postgresql

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

在 Docker 中安装地理空间库

Django 的官方文档列出了开始开发 PostGIS 应用程序所需的 3 个依赖项。他们根据数据库列出一个表。

我使用 docker 进行本地开发,但我很困惑哪些包应该安装在 Django 容器中,哪些包应该安装在 PostgreSQL 容器中。我猜其中一些应该同时存在。

我将非常感谢您对此的帮助。

django postgresql postgis gdal geodjango

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

在Django中登录后重定向到Next

当用户访问需要登录的URL时.视图装饰器重定向到登录页面.在用户输入用户名和密码后,如何将用户重定向到他尝试访问的页面("下一步")?

Views.py

def login_view(request):
    template = 'pos/login.html'
    form = LoginForm
    if request.method == 'POST':
        username = request.POST.get('username', '')
        password = request.POST.get('password', '')
        user = authenticate(username=username, password=password)
        if user is not None:
            if user.is_active:
                login(request, user)
                messages.success(request, "You have logged in!")
                return redirect('home')
            else:
                messages.warning(request, "Your account is disabled!")
                return redirect('/login')
        else:
            messages.warning(request, "The username or password are not valid!")
            return redirect('/login')
    context = {'form': form}
    return render(request, template, context)

@login_required(redirect_field_name='next', login_url='/login')
def bar(request):
    template = 'pos/bar.html'
    drink = OrderItem.objects.filter(product__catgory__gt=1).order_by('-created')
    context …
Run Code Online (Sandbox Code Playgroud)

django login

4
推荐指数
2
解决办法
6669
查看次数

使用事件存储和 ORM 进行事件溯源

我正在使用 Django 为微服务架构构建身份验证服务。它更像是一个实验,而不是现实世界的实施,以了解更多有关事件溯源的信息。

我确实知道 Django 有一个 ORM,它与框架紧密结合,使用 Flask 将是一种更简单的方法,但我正在尝试找到一种解决方法。

用例非常简单。用户注册后,他会收到一封电子邮件来激活他的帐户。用户再次被激活,我发送一封电子邮件,通知他他的帐户已激活。

根据我的理解,这是在事件源系统中。事件被触发并存储,我们可以获取最新状态并将其存储在数据库中。就我而言,它将是使用 Django ORM 的 Postgres。

我使用 django 中的信号将事件发布到 kafka。pre_save() 信号。然后模型将保存该对象。

如果有尚未实施的更新,请参见下文。我只会发布更新的字段。并更新 Django 中的对象。

有人看到这种方法有任何警告吗?或者在模型的保存方法中实现它会更好吗?

我很想听听您对此的反馈。

# app/services.py

class KafkaService:

    def __init__(self):
        try:
            self.producer = KafkaProducer(bootstrap_servers=settings.KAFKA_BROKERS,
                                          value_serializer=lambda m: json.dumps(m).encode('ascii'))
        except KafkaError as ke:
            logger.exception(f"Something went wrong creating a kafka producer: {ke}")
            self.producer = None
        except Exception as ex:
            logger.exception(f"Something went wrong creating a kafka producer: {ex}")
            self.producer = None

    def publish(self, topic, key, data):
        if not self.producer:
            logger.error(f"Kafka Producer could not …
Run Code Online (Sandbox Code Playgroud)

django orm cqrs event-sourcing apache-kafka

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