小编sto*_*sky的帖子

只需使用没有互联网连接的python anaconda

我想在无法访问互联网的生产服务器上部署python环境.

我发现了Python Anaconda发行版并安装它以试一试.安装目录是1.6GB,我可以在pkgs目录中看到有很多库.

但是,当我尝试安装环境时,conda不会在本地目录中查找...

conda create --offline --use-local --dry-run  --name pandas_etl python
Using Anaconda Cloud api site https://api.anaconda.org
Fetching package metadata:
Solving package specifications:
Error:  Package missing in current linux-64 channels:
  - python
Run Code Online (Sandbox Code Playgroud)

那么,如果conda需要在在线存储库中获取它们,那么捆绑所有这些库的重点是什么?也许我错过了什么?

我正在寻找一种"包含python的大量电池",以方便部署.

注意:我使用Linux系统并安装了常规的anaconda,而不是miniconda

python anaconda

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

其他模块中定义的python自定义异常未被捕获

让我总结一下:

我有一个包含两个类的模块(注意:该模块位于一个包中):

自定义异常:

class MYAUTHError(Exception):
    def __init__(self, *args, **kwargs):
        print('--- MYAUTHError!!! ---')
Run Code Online (Sandbox Code Playgroud)

和一个使用此异常的类(这里是一个示例):

try:
    resp_login.raise_for_status()
except requests.exceptions.HTTPError as ex:
    logging.error("ERROR!!! : user  authentication failed)
    raise MYAUTHError('oups')
Run Code Online (Sandbox Code Playgroud)

在这个模块(文件)内我知道这是有效的。例如,我可以编写这样的代码并验证是否捕获了我的自定义异常:

try:
    raise MYAUTHError('oups')
except MYAUTHError:
    print("got it")
Run Code Online (Sandbox Code Playgroud)

但是,当从另一个模块(导入此模块的模块)使用时,我没有成功捕获此自定义异常......

from mypackage import mymodulewithexception

# somewhere in the code, just to test. OK : my class is known.
extest = mymodulewithexception.MYAUTHError('**-test-**')
print(type(extest))

# but this does not catch anything :
except mymodulewithexception.MYAUTHError as ex:
    logging.error("Authentication failed", ex)
    return
Run Code Online (Sandbox Code Playgroud)

我确信,异常被抛出,因为调用模块是一个 Flask 应用程序,并且调试服务器清楚地向我显示异常被抛出,因为它没有被处理。

在试图理解这一点时,我只是用另一个著名的异常替换了我的自定义异常:ValueError。我更改了调用模块中的代码以捕获此内容:当然,这有效。

我什至尝试捕获异常(真正的通用类):

   except mymodulewithexception.MYAUTHError …
Run Code Online (Sandbox Code Playgroud)

python exception

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

仅包含月份和年份的Django DateField

我发布此邮件是因为找不到适合我的答案/示例,并且以一种我在那里没有看过的方式解决了它。也许有用或可以讨论。

基本上,我的应用程序显示表单集,用户可以在其中创建对象。验证后,将再次显示表单集,用户可以添加新对象。指定日期不相关。

我首先开始使用一些JavaScript来做到这一点,然后使用Django自定义模型(将其归为models.DateField)。

我无法在以后成功完成此操作(我的文章更新链接到该文章)由于有截止日期,我使用简单的ChoiceField将对象存储为Integers来完成此操作,然后使用@property方法从这些对象中建立一个正确的日期用户输入(每天加1)。

这样,我避免深入研究Django蒸汽管道,甚至摆脱了datepicker!

但是感谢@property,我仍然可以在Django模板中保留格式化日期的便利,并进行日期计算等。

models.py:

注意:如果无法在填充字段中构建日期,请使用返回None,否则在尝试在模板中呈现这些@property字段时将出现未绑定的错误。

class MyModel(models.Model):

    YEAR_CHOICES = [(y,y) for y in range(1968, datetime.date.today().year+1)]
    MONTH_CHOICE = [(m,m) for m in range(1,13)]

    start_year = models.IntegerField(choices=YEAR_CHOICES,
                 default=datetime.datetime.now().year,)
    start_month = models.IntegerField(choices=MONTH_CHOICE,
                  default=datetime.datetime.now().month,)
    end_year = models.IntegerField(choices=YEAR_CHOICES,
               default=datetime.datetime.now().year,)
    end_month = models.IntegerField(choices=MONTH_CHOICE,
                default=datetime.datetime.now().month,)

    @property
    def start_date(self):
        if self.start_year and self.start_month:
            return datetime.date(self.start_year, self.start_month, 1)
        elif self.start_year:
            return datetime.date(self.start_year, 12, 31)
        else:
            return None

    @property
    def end_date(self):
        if self.end_year and self.end_month:
            return datetime.date(self.end_year, self.end_month, 1)
        elif self.end_year:
            return datetime.date(self.end_year, 12, 31) …
Run Code Online (Sandbox Code Playgroud)

forms django datefield

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

Vue.js 表单数据绑定在浏览器返回页面时丢失

这是我在做什么: 我有一个表单集组件,它通过 ajax 获取数据来填充表单集。用户可以从表单修改这些数据并提交。

问题:这很好用。但是,我注意到如果我导航到另一个页面然后点击浏览器“返回一页”按钮,表单在那里(模板中的 DOM)但是是空的。v-model 输入字段中不再有数据绑定...

大多数关于此行为的帖子都与我不使用的 vue-router 相关。

我认为它可能需要处理生命周期钩子......实际上,在我的组件上,我在“挂载”时获取数据。但是,如果是这样,哪个生命周期?

我也尝试过“保持活力”但没有成功。

我在我的组件上放了一些详细的日志,试图在浏览器返回时捕获生命周期钩子,但没有打印出来......

beforeCreate: function() {
    console.log('---- BEFORE CREATE ----> ')
},
created: function() {
    console.log('---- CREATED ----> ')
    this.getModelObjects();
},
beforeMount: function() {
    console.log('---- BEFORE MOUNT ----> ')
},
mounted: function() {
    console.log('---- MOUNTED ---->')
    this.getModelObjects();
},
beforeUpdate: function() {
    console.log('---- BEFORE update ----> ')
},
updated: function() {
    console.log('---- UPDATED ----> ')
},
beforeDestroy: function() {
    console.log('---- BEFORE DESTROY ----> ')
},
destroyed: function() {
    console.log('----  DESTROYED ----> …
Run Code Online (Sandbox Code Playgroud)

forms vue.js vue-component vuejs2 v-model

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

Django DRF 遵循关系

好吧,我正在尝试跟踪与 Django Rest Framework 的关系。

这是一个简化的模型:

class Model1(models.Model):
    name = models.CharField(max_length=20)
    owner = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)

class Model2(models.Model):
    title = models.CharField(max_length=12, null=True, blank=True)
    model1 = models.ForeignKey(Model1, on_delete=models.CASCADE)
Run Code Online (Sandbox Code Playgroud)

和序列化器:

class Model1Serializer(serializers.ModelSerializer):
    class Meta:
        model = Model1
        fields = '__all__'

class Model2Serializer(serializers.ModelSerializer):
    class Meta:
        model = Model2
        fields = '__all__'
Run Code Online (Sandbox Code Playgroud)

从 Model2 中,我想访问所有者属性,例如电子邮件......

如果没有 DRF 并且在标准模板中,我会这样做:

{{ instanceOfModel2.model1.owner.email }}
Run Code Online (Sandbox Code Playgroud)

这将遵循关系。

您知道如何使用 Django DRF 实现这一目标吗?

我查看了https://www.django-rest-framework.org/api-guide/relations/ 但我想要的是相反的方式......而且我不想通过 REST API 公开 Django 用户模型....

python django relationship django-rest-framework

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