小编cod*_*321的帖子

faker(python)在shell中随机化,但在DjangoModelFactory对象中不随机化

我有一些使用faker(http://www.joke2k.net/faker/)进行单元测试的模型,它在shell中是随机的:

In [50]: get_random()
Out[50]: 22347376

In [51]: get_random()
Out[51]: 66840240

In [52]: import factory, random, time

In [53]: from factory import DjangoModelFactory, lazy_attribute

In [54]: from faker import Faker

In [55]: FAKER = Faker(locale='en_US')

In [60]: FAKER.email()
Out[60]: u'anderson.meaghan@jonesharvey.org'

In [61]: FAKER.seed(get_random())

In [62]: FAKER.email()
Out[62]: u'ubeatty@gmail.com'

In [63]: FAKER.seed(get_random())

In [64]: FAKER.email()
Out[64]: u'klocko.martha@gmail.com'

In [65]: FAKER.email()
Out[65]: u'lebsack.zela@homenick.info'

In [66]: FAKER.email()
Out[66]: u'lance90@bauch.com'
Run Code Online (Sandbox Code Playgroud)

播种是可选的。但是当我创建一个新对象时,我总是得到它发出相同的电子邮件:

In [2]: u = User()

In [3]: u
Out[3]: <User: Ut …
Run Code Online (Sandbox Code Playgroud)

python generator faker factory-boy

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

使用dict理解if/else逻辑来确定是否使用函数

我有一个破碎的功能,应该通过一个函数拧掉所有项目,或者只运行True一个合格函数传递的项目,如果给出一个合格的函数

def transform_dictionary(dictionary, callback, qualification_callback=None):
    return {k: callback(v) if qualification_callback and qualification_callback(v) else v for k, v in dictionary.items()}
Run Code Online (Sandbox Code Playgroud)

它被破坏了,因为它需要第二个功能来转换.我现在有

def transform_dictionary(dictionary, callback, qualification_callback=None):
    if qualification_callback:
        return {k: callback(v) if qualification_callback(v) else v for k, v in dictionary.items()}
    else:
        return {k: callback(v) for k, v in dictionary.items()}
Run Code Online (Sandbox Code Playgroud)

这是丑陋但有效.我可以在一行中执行此操作,我可以通过回调运行所有值,也可以先检查第二个回调中的真值,然后只运行通过的内容?谢谢

python dictionary-comprehension

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

如何使用子类的默认值调用父类init?

我试图给我的子类默认变量并在文件变胖时停止复制代码:

class Base(object):

    def __init__(self, username=None, password=None, start_url=None):
        self.username  = username
        self.password  = password
        self.start_url = start_url

class Subclass(Base):

    def __init__(self, username="hoss_it87", password="whatsgoodSO", start_url="www.boss-sauce.com"):
        super(Subclass, self).__init__()
Run Code Online (Sandbox Code Playgroud)

Base当然有效,但我想Subclass以相同的方式初始化,只是None用真实的字符串覆盖(当然,所有登录样式都相似)。

In [12]: x = Base('myuser', 'mypassword', 'www.google.com')

In [13]: x.username
Out[13]: 'myuser'

In [14]: x.start_url
Out[14]: 'www.google.com'

In [15]: y = Subclass()

In [16]: y.username

In [17]: y.start_url

In [18]: y.password

In [19]: 
Run Code Online (Sandbox Code Playgroud)

为什么我没有得到任何Subclass属性,我该如何解决?谢谢

请注意删除基类默认值会导致其他问题

class Base(object):

    def __init__(self, username, password, start_url):
        self.username  = username
        self.password …
Run Code Online (Sandbox Code Playgroud)

python selenium python-2.7 python-internals selenium-webdriver

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

用 ast 重写代码;Python

我正在学习 AST,它似乎是一个强大的东西,但我很困惑代码的去向以及它为什么消失了。说我想重写

example = """def fake(x):\n
    y = ['useless list']\n
    return x
"""
Run Code Online (Sandbox Code Playgroud)

作为

example = """def fake(x):\n
    return x
"""
Run Code Online (Sandbox Code Playgroud)

我看不到任何以这种方式重写的方法。我什至找不到获取该行文本的方法:

In [1]: example = """def fake(x):\n
   ...:     y = ['useless list']\n
   ...:     return x
   ...: """

In [3]: import ast

In [4]: p = ast.parse(example)

In [5]: p
Out[5]: <_ast.Module at 0x7f22f7274a10>

In [6]: p.body
Out[6]: [<_ast.FunctionDef at 0x7f22f7274a50>]

In [7]: p.body
Out[7]: [<_ast.FunctionDef at 0x7f22f7274a50>]

In [8]: f = p.body[0]

In [9]: f
Out[9]: <_ast.FunctionDef at 0x7f22f7274a50> …
Run Code Online (Sandbox Code Playgroud)

python abstract-syntax-tree python-2.7 data-structures

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

useEffect 触发并运行打印语句,但没有实际的 axios.post 调用运行 Reactjs

我有一个 useEffect 函数,由于yearsBackSettings更改而触发,并且 useEffect 内的 console.log 语句也触发:

useEffect(() => {
    console.log("something changed")
    console.log(yearsBackSettings)
    if (userId) {
      const user_profile_api_url = BASE_URL + '/users/' + userId
      const request_data = {
        searches: recentSearches,
        display_settings: displaySettings,
        years_back_settings: yearsBackSettings
      }

      console.log("running user POST")
      console.log(request_data)

      axios.post(user_profile_api_url, request_data)
        .then(response => {
          console.log("user POST response")
          console.log(response)
        })
    }


  }, [recentSearches, displaySettings, yearsBackSettings])
Run Code Online (Sandbox Code Playgroud)

如图所示,更改yearBackSettings 会导致其运行,它应该使用所有新设置发出发布请求:

在此输入图像描述

然而,由于某种原因,除了股票搜索运行之外,服务器上没有任何反应:

the last updated time for stock ibm before save: 08/25/2022 08:13:30
stock was updated within the last 5 minutes...no need to …
Run Code Online (Sandbox Code Playgroud)

javascript python django reactjs

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

将python函数解析为decorator中的字符串

我正在尝试编写一个函数调试装饰器,它将会看到:

def foo(baz):
  bar = 1
  bar = 2
  return bar
Run Code Online (Sandbox Code Playgroud)

并将其包装到:

def foo(baz):
  bar = 1
  print 'bar: {}'.format(bar)
  bar = 2
  print 'bar: {}'.format(bar)
  return bar
Run Code Online (Sandbox Code Playgroud)

我需要使用函数作为文本,抓住"\ w +(?=\s*[=])",但不知道如何访问它.我有一个装饰我从一个有效的博客修改,但我只是尝试将其更改为:

class decorator_string_check(object):

   def __init__(self, func):
        self.func = func
        wraps(func)(self)

   def __call__(self, *args, **kwargs):
        print dir(self.func)
        print dir(self.func.__code__)
        print self.func.__code__.__str__()
        ret = self.func(*args, **kwargs)
        return ret

@decorator_string_check
def fake(x):
    y = 6
    y = x
    return y

y = fake(9)
Run Code Online (Sandbox Code Playgroud)

并且我正在获得有价值的东西,即:

['__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__doc__', '__format__', …
Run Code Online (Sandbox Code Playgroud)

python decorator python-decorators python-magic

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

什么字面上定义了一个django应用程序?

我已经阅读了一些关于"app"应该在django中意味着什么的问题,但是它们会进入应用程序的通用/使用,这很重要,但不是应用字面上的"是".例如,我今天感受到了好奇心

  1. 我删除了一个用django-admin startapp作为应用安装的文件夹,并收到一个错误,stackO告诉我是由于我的INSTALLED_APPS中删除了一个已删除的应用名称.清除名称后,我的应用程序再次运行

  2. 在项目的最高级别使文件夹冷(只是mkdir,没有startapp)时,当尝试从真实应用程序导入名称时,我必须将我的项目添加到sys.path列表才能导入.将此文件夹重命名为应用后,导入不再是问题

我已经阅读过有关此主题的问题,其中包含"好的,我有一个models.py文件,因此它是一个应用程序",而且似乎很少有人真正理解应用程序的启动方式.

我的问题是,

  1. 我有什么余地修改django制作的应用程序?我可以删除它附带的所有文件(init除外)并使其成为没有视图和模型的冷库吗?除init之外的任何文件是否都需要正常运行?

  2. django在运行startapp时会做什么导致应用程序自动导入,当我在其中创建一个带有init的文件夹时,效果不存在(正如我所说的那样需要将项目路径添加到该文件夹​​中的sys.path ).换句话说,django命令"startapp"实际上用来注册应用程序是什么?这个动作在django.core.management.templates.py中,我今天读了它,看到了TemplateCommand.handle()中引用应用程序或项目名称的东西,但是看不清楚它是如何注册它们的.它导入sys,但搜索"sys.module"不在文件中

  3. 如果我想将一个带有init的空目录转换为一个应用程序,我在shell中做什么来进行此更改而不执行startapp?

谢谢

python django django-apps

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

'str'对象没有'visible_fields'属性; 基于django类的观点

我昨天开始一整天都在努力争取课堂观点.我的问题一直在变'str' object has no attribute 'visible_fields',所以下面的'表单'项目实际上不是一个表单:

模板-

<form action="" method="post">
    {% csrf_token %}
    {{form|bootstrap}}
    <input type="submit" name="submit" value="Add new article"/>
</form>
Run Code Online (Sandbox Code Playgroud)

视图-

class ArticleCreateView(CreateView):
    model = Article
    template_name = 'index/add_article.html'
    form_class = ArticleForm

    def post(self, request, *args, **kwargs):
        article_form = self.get_form()
        if article_form.is_valid():
            article = article_form.save(commit=False)
            title   = article_form.cleaned_data['title']
            url     = article_form.cleaned_data['url']
            title = process_title(url)
            article.title = title
            article.save()
            return redirect("index:article_list")
        else:
            form = ArticleForm()
            print type(form)
            print dir(self)
            return render(request, 'index/add_article.html')
Run Code Online (Sandbox Code Playgroud)

最糟糕的是印刷type(form)节目<class 'index.forms.ArticleForm'>.如果表单已保存,我正在尝试将其重定向到列表视图,并在表单错误的情况下重播带有错误的表单(您已经有一篇包含该URL的文章).我听说课堂观点更容易使用,而且我通过使用它们读过的大型项目,但它们看起来确实比旧观点更糟糕.我认为这是因为我没有很好地使用它们 …

forms django django-class-based-views

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

解析引用的带有空格的args列表的最有效方法

我需要从类似的东西解析聊天机器人字符串

myproject appliances lasthour
Run Code Online (Sandbox Code Playgroud)

("myproject", "appliances", "lasthour")
Run Code Online (Sandbox Code Playgroud)

或者也

myproject appliances "2017-4-13 10:00" "2017-4-13 12:00"
Run Code Online (Sandbox Code Playgroud)

("myproject", "appliances", "2017-4-13 10:00", "2017-4-13 12:00")
Run Code Online (Sandbox Code Playgroud)

问题是引用字符串中的空格.我可以手工完成它,但它是一个更简单,更易维护的1行解决方案,用引号字符串中的空格解析命令行args?

python python-2.7

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

FieldError:为事件指定的未知字段(received_time)。检查 EventAdmin 类的字段/字段集/排除属性

我有以下型号

class Event(models.Model):
    product_type = models.CharField(max_length=250, null=False, blank=False)
    received_time = models.DateTimeField(editable=False)
Run Code Online (Sandbox Code Playgroud)

在管理员中:

class EventAdmin(admin.ModelAdmin):
    fields = ['product_type', 'received_time']
Run Code Online (Sandbox Code Playgroud)

尝试编辑事件时出现以下错误(单击管理中的单个事件):

FieldError at /admin/events/event/20/
Unknown field(s) (received_time) specified for Event. Check fields/fieldsets/exclude attributes of class EventAdmin.
Run Code Online (Sandbox Code Playgroud)

我确实看到了,editable=False但我仍然希望它至少是可见的,即使它不可编辑。有没有办法修复这个错误并在管理员中编辑这些项目?

django django-models django-admin

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