小编jnn*_*nns的帖子

React中的状态和道具有什么区别?

我正在观看关于React的Pluralsight课程,导师说道具不应该改变.我现在正在阅读一篇关于道具与状态的文章(uberVU/react-guide),它说

道具和状态更改都会触发渲染更新.

在文章的后面它说:

道具(属性的简称)是组件的配置,如果可以的话,它的选项.他们是从上面收到的,不可改变的.

  • 道具可以改变,但它们应该是不可改变的?
  • 什么时候应该使用道具?什么时候应该使用状态?
  • 如果你有React组件需要的数据,它应该通过道具或React组件中的设置通过getInitialState吗?

javascript reactjs

493
推荐指数
11
解决办法
17万
查看次数

无法找到存储文件__init__.py的翻译的语言环境路径

我正在尝试翻译Django应用程序.我{% trans %}在模板中创建了一些字符串.但是,当我在我的app文件夹中执行以下命令时,收到一条错误消息:

$ django-admin.py makemessages -l fr 
CommandError: Unable to find a locale path to store translations for file __init__.py`
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

django translation

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

如何在graphviz中控制节点放置(即避免边缘交叉)

我正在使用graphviz(点)生成您可以在下面看到的图形.左下角的节点(红色椭圆)因其边缘穿过相邻节点的几个边缘而引起烦恼.有没有办法将节点放置到某个区域?

谢谢你的想法

边缘穿过其他几个边缘的图形

dot graphviz edge-detection

43
推荐指数
4
解决办法
4万
查看次数

如何在Django/Python中减去两个日期?

我正在研究一个小健身追踪器,以便自学Django.我希望随着时间的推移绘制我的体重图,所以我决定使用Python Google Charts Wrapper.Google图表要求您将日期转换为ax坐标.要做到这一点,我想通过从最后一次称重中减去第一次称重然后使用它来计算x坐标来获取数据集中的天数(例如,我可以通过结果得到100并增加x坐标每个y坐标的结果数.)

无论如何,我需要弄清楚如何从彼此中减去Django日期时间对象,到目前为止,我在谷歌和堆栈中都是罢工.我知道PHP,但从来没有掌握OO编程,所以请原谅我的无知.这是我的模型的样子:

class Goal(models.Model):
    goal_weight = models.DecimalField("Goal Weight", 
        max_digits=4, 
        decimal_places=1)
    target_date = models.DateTimeField("Target Date to Reach Goal")
    set_date = models.DateTimeField("When did you set your goal?")
    comments = models.TextField(blank=True)

    def __unicode__(self):
        return unicode(self.goal_weight)

class Weight(models.Model):
    """ Weight at a given date and time. """

    goal = models.ForeignKey(Goal)
    weight = models.DecimalField("Current Weight",
        max_digits=4, 
        decimal_places=1)
    weigh_date = models.DateTimeField("Date of Weigh-In")
    comments = models.TextField(blank=True)

    def __unicode__(self):
        return unicode(self.weight)

    def recorded_today(self):
        return self.date.date() == datetime.date.today()
Run Code Online (Sandbox Code Playgroud)

关于如何在视图中进行的任何想法?非常感谢!

python django time datetime date

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

MANIFEST.in,package_data和data_files澄清?

我正在尝试创建一个Python包,我有一个像这样的目录结构:

mypkg/
??? __init__.py
??? module1
?   ??? x.py
?   ??? y.py
?   ??? z.txt
??? module2
    ??? a.py
    ??? b.py
Run Code Online (Sandbox Code Playgroud)

然后我添加了所有文件MANIFEST.in,当我检查创建的存档时,它有所有文件.

当我做python setup.py install的时候dist-packages/mypkg/module1.我只看到Python文件而不是z.txt.

我有z.txt两个MANIFEST.insetup.py:

setup (
    packages = [
        'mypkg',
        'mypkg.module1',
        'mypkg.module2',
    ],
    package_data = {
        'mypkg': ['module1/z.txt']
    },
    include_package_data = True, 
    ...
)
Run Code Online (Sandbox Code Playgroud)

我尝试添加该文件,data_files但是创建了一个目录/usr/local.我想将它保存在源代码目录中,因为代码使用该数据.

我已经阅读了下面列出的帖子,但我一直对于z.txt在正确的位置之后保持正确位置的方法感到困惑setup.py install.

python distutils setuptools

22
推荐指数
2
解决办法
5088
查看次数

如何在Python中创建PATCH请求?

有没有办法在Python中使用PATCH http方法发出请求?

我尝试使用httplib,但它不接受PATCH作为方法参数.

python patch http httplib

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

Django py.test找不到设置模块

我有以下项目结构

base
    __init.py
    settings
        __init__.py
        settings.py
    tests
        pytest.ini
        test_module.py
Run Code Online (Sandbox Code Playgroud)

pytest.ini看起来像这样:

[pytest]
#DJANGO_SETTINGS_MODULE =base.settings.settings
Run Code Online (Sandbox Code Playgroud)

test_module.py看起来像这样:

def test_django():
    from base.settings import settings as base_settings
    from django.conf import settings as django_settings
    assert 3==5
Run Code Online (Sandbox Code Playgroud)

我现在跑的时候:

py.test
Run Code Online (Sandbox Code Playgroud)

它会毫无问题地运行导入,并会在assert 3==5(如预期的那样)引发错误.这告诉我基础已打开sys.pathbase.settings.settings可以导入.

现在我test_module.py改为:

def test_django():
    from base.settings import settings as base_settings
    from django.conf import settings as django_settings
    print django_settings.xxx
    assert 3==5
Run Code Online (Sandbox Code Playgroud)

我现在跑的时候:

py.test --ds=base.settings.settings
Run Code Online (Sandbox Code Playgroud)

我收到错误:

错误:无法导入设置'base.settings.settings'(是否在sys.path上?):没有名为base.settings.settings的模块.

当我不通过命令行设置设置,但通过pytest.ini文件(通过取消注释行)时,效果相同.

看起来我想念这里的东西???

python django pytest

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

Django Rest Framework POST更新如果存在或创建

我是DRF的新手.我阅读了API文档,也许它没有注意到,但我找不到一个方便的方法来做到这一点.

我有一个Answer对象与问题有一对一的关系.

在前端我曾经使用POST方法创建一个发送到api/answers的答案,并将PUT方法更新发送到例如api/answers/24

但我想在服务器端处理它.我只会向api/answers发送POST方法,如果对象存在,DRF将根据answer_id或question_id(因为它是一对一)进行检查.如果是,它将更新现有的,如果不是,它将创建一个新的答案.

我应该在哪里实现它,我无法弄明白.在序列化程序或ViewSet或其他内容中覆盖create?

我的模型,序列化器和视图如下:

class Answer(models.Model):
    question = models.OneToOneField(
        Question, on_delete=models.CASCADE, related_name="answer"
    )
    answer = models.CharField(
        max_length=1, choices=ANSWER_CHOICES, null=True, blank=True
    )


class AnswerSerializer(serializers.ModelSerializer):
    question = serializers.PrimaryKeyRelatedField(
        many=False, queryset=Question.objects.all()
    )

    class Meta:
        model = Answer
        fields = ("id", "answer", "question")


class AnswerViewSet(ModelViewSet):
    queryset = Answer.objects.all()
    serializer_class = AnswerSerializer
    filter_fields = ("question", "answer")
Run Code Online (Sandbox Code Playgroud)

python django django-rest-framework

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

在Django中由.annotate()创建的字段上使用.extra()

我想为表中的每个对象检索两个字段(它们本身就是聚合)的总和.

以下可能会更好地描述我所追求的但导致Unknown column in field list-Error:

items = MyModel.objects.annotate(
                field1=Sum("relatedModel__someField"),
                field2=Sum("relatedModel__someField")).extra(
                        select={"sum_field1_field2": "field1 + field2"})
Run Code Online (Sandbox Code Playgroud)

我也尝试使用F()进行字段查找,但这给了我一个无效的sql语句.

关于如何解决这个问题的任何想法都非常感谢.

django django-queryset

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

如何在Django中调试失败的测试?

我如何调试我的测试?例如,我POST以创建一个条目,并期望它验证并返回一个特定的页面.它适用于浏览器和shell,但测试是唯一失败的(具有讽刺意味!).我想将响应打印到控制台或其他东西,以便我可以读取错误或你有什么.但我只能看到我print在视图中看到的东西.

不确定是否有必要,但这里是有问题的测试代码tests.py:

    resp = self.client.post('/meal/invite/', 
        {'summary': 'Test munch', 'when': now(), 'max_diners': '1', 'description': 'Munchies'}, follow=True)
    self.assertEqual(resp.status_code, 200)
    self.assertContains(resp, 'Test munch', 1)
    self.assertContains(resp, 'You are hosting this meal', 1)
Run Code Online (Sandbox Code Playgroud)

最后的断言是不正确的.如果我将其更改为原始表单页面中显示"字段必需"错误的值,则会通过.我只是看不到我错过的东西.

我有一些其他测试工作,但我只是不知道如何调试这个.

怎么做?

python testing django unit-testing

15
推荐指数
4
解决办法
9987
查看次数