小编Saš*_*aba的帖子

Psql无法连接到服务器:没有这样的文件或目录,5432错误?

我正试图psql在我的Vagrant机器上运行,但是我收到了这个错误:

psql: could not connect to server: No such file or directory

Is the server running locally and accepting connections on 
Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
Run Code Online (Sandbox Code Playgroud)

注意:Vagrant 1.9.2 Box:ubuntu/trusty64,https://atlas.hashicorp.com/ubuntu/boxes/trusty64

编辑 命令我用来安装和运行postgres:

  • sudo apt-get update
  • sudo apt-get install postgresql
  • sudo su postgres
  • psql -d postgres -U postgres

postgresql vagrant

66
推荐指数
11
解决办法
12万
查看次数

如何使用Flask test_client设置请求参数?

我必须测试一个从request.args获取某些信息的视图.

我无法模仿这个,因为视图中的很多东西都使用了请求对象.我能想到的唯一选择是手动设置request.args.

我可以用test_request_context()做到这一点,例如:

with self.app.test_request_context() as req:
    req.request.args = {'code': 'mocked access token'}
    MyView()
Run Code Online (Sandbox Code Playgroud)

现在,此视图中的请求将包含我已设置的参数.但是我需要调用我的视图,而不仅仅是初始化它,所以我使用它:

with self.app.test_client() as c:
    resp = c.get('/myview')
Run Code Online (Sandbox Code Playgroud)

但我不知道如何以这种方式操纵请求参数.

我试过这个:

with self.app.test_client() as c:
    with self.app.test_request_context() as req:
        req.request.args = {'code': 'mocked access token'}
        resp = c.get('/myview')
Run Code Online (Sandbox Code Playgroud)

但是这没有设置request.args.

python testing unit-testing flask flask-testing

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

如何在python中生成文件而不将其保存到磁盘?

我正在使用 Python 2.7 和 Django 1.7。

我的管理界面中有一个方法可以生成某种 csv 文件。

def generate_csv(args):
    ...
    #some code that generates a dictionary to be written as csv
    ....

    # this creates a directory and returns its filepath
    dirname = create_csv_dir('stock')

    csvpath = os.path.join(dirname, 'mycsv_file.csv')
    fieldnames = [#some field names]

    # this function creates the csv file in the directory shown by the csvpath
    newcsv(data, csvheader, csvpath, fieldnames)

    # this automatically starts a download from that directory
    return HttpResponseRedirect('/media/csv/stock/%s' % csvfile)
Run Code Online (Sandbox Code Playgroud)

总而言之,我创建了一个 csv 文件,将其保存在磁盘上的某个位置,然后将其 URL …

python csv django

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

获取Python的一系列日子

我正在制作一个计划应用程序,我需要一种方法来分类每个块的天数范围.日期标记为整数:

MON, TUE, WEN, THU, FRI, SAT, SUN0, 1, 2, 3, 4, 5, 6

所以假设我已经安排了一个从星期二开始到星期五结束的区块.确定其范围很简单:

range(block.start_day, block.end_day +1)会给我的(1, 4).

但如果一个街区周六开始并于周三结束,那将无效.

我需要的结果是(5, 6, 0, 1, 2).

我有点卡在这一部分.我想我可以使用模运算符,但我不确定.

**编辑**我道歉,我已经更新了正确的所需输出.

使用Python 2.7.6

python

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

如何在Django中测试send_mail?

使用Django 1.7和Python 2.7.

我想测试邮件是否已发送以及邮件内容是否正确.

我尝试过使用django.core.mail中的outbox,但无济于事.我也可以获得stdout(因为我在运行测试时可以在控制台中看到邮件)?

models.py

class User(AbstractBaseUser, PermissionsMixin):
    USERNAME_FIELD = 'email'

    email = models.EmailField(max_length=255, unique=True)
    is_staff =  models.BooleanField(default=False)
    org = models.ForeignKey('Org', null=True, blank=True,
        on_delete=models.SET_NULL)

    def __unicode__(self):
        return self.email

    @staticmethod
    def send_password_token(email):
        user = get_object_or_404(User, email=email)
        token = Token.objects.get(user=user)
        message_body = 'Your password reset token:\n\n\t%s' % token.key
        send_mail('Password reset:', message_body,
            settings.FROM_EMAIL, [email], fail_silently=False)
Run Code Online (Sandbox Code Playgroud)

tests.py

class UserModelTest(TestCase):
    def setUp(self):
        self.user = User.objects.create_user(email='user@info.com',
            password='0000')

    @override_settings(EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend')
    def test_send_password_token(self):
        """
        Sends a password reset mail with users authentication token.
        """
        token = …
Run Code Online (Sandbox Code Playgroud)

python email django django-mailer

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

在测试中捕获 Flask 中止状态代码?

我的基于烧瓶类的视图中有一个 abort()。我可以断言已调用 abort,但我无法访问上下文管理器中的 406 代码。

视图.py

from flask.views import View
from flask import abort

class MyView(View):

    def validate_request(self):
        if self.accept_header not in self.allowed_types:
            abort(406)
Run Code Online (Sandbox Code Playgroud)

测试.py

from werkzeug.exceptions import HTTPException

def test_validate_request(self):
    # Ensure that an invalid accept header type will return a 406

    self.view.accept_header = 'foo/bar'
    with self.assertRaises(HTTPException) as http_error:
        self.view.validate_request()
        self.assertEqual(http_error.???, 406)
Run Code Online (Sandbox Code Playgroud)

python flask

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

如何通过django中的url传递参数?

我试图将参数传递给我的视图,但我不断收到此错误:

NoReverseMatch at /pay/how

Reverse for 'pay_summary' with arguments '(False,)' and keyword arguments '{}' not found. 1 pattern(s) tried: ['pay/summary/$']
Run Code Online (Sandbox Code Playgroud)

/pay/how是我现在的观点.(这是该视图返回的当前模板).

urls.py

url(r'^pay/summary/$', views.pay_summary, name='pay_summary')
Run Code Online (Sandbox Code Playgroud)

views.py

def pay_summary(req, option):
    if option:
        #do something
    else:
        #do something else
    ....
Run Code Online (Sandbox Code Playgroud)

模板

<a href="{% url 'pay_summary' False %}">my link</a>
Run Code Online (Sandbox Code Playgroud)

编辑

我希望视图应该接受POST请求,而不是GET.

python django

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

Django模板中两个块之间的可变上下文?

我有两个块使用相同的变量调用相同的方法.我想只调用一次该方法,但结果就是块外标记的范围.我尝试在父模板中header.html使用with标记调用此方法,但似乎没有任何效果.

这是布局:

{% extends "header.html" %}

{% load navigation_tags %}

{% block header %}
    {% get_section site=site as section %}
    {% include "foobar.html" with section=section %}
{% endblock header %}

{% block navigation %}
    <nav>
        <div class="container">
            {% get_section site=site as section %}
            {% navigation section.slug %}
        </div>
    </nav>
{% endblock navigation %}
Run Code Online (Sandbox Code Playgroud)

navigation_tags.py

@register.assignment_tag
def get_parent_section(site):
    if site.id == settings.FOOBAR_SITE_ID:
        section = Section.objects.get(id=settings.FOOBAR_SECTION_ID)
    else:
        # This is also a section instance.
        return site.default_section
Run Code Online (Sandbox Code Playgroud)

python django templates

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

Django Rest Framework"需要一个有效的整数."?

我希望在反序列化期间将空字符串默认为0或null.

JSON

{
  'injuries': '6',
  'children': '2',
  'civilians': '',
}
Run Code Online (Sandbox Code Playgroud)

但是,我不断收到此错误:

"需要一个有效的整数."

models.py

from django.db import models    

class Strike(models.Model):
    location = models.ForeignKey('Location', on_delete=models.CASCADE)
    civilians = models.PositiveIntegerField(blank=True, null=True)
    injuries = models.PositiveIntegerField(blank=True, null=True)
    children = models.PositiveIntegerField(blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)

serializers.py

from rest_framework import serializers
from .models import Strike


class StrikeSerializer(serializers.ModelSerializer):
    civilians = serializers.IntegerField(default=0, required=False)

    class Meta:
        model = Strike
        fields = '__all__'

    def create(self, validated_data):
        return Strike.objects.create(**validated_data)
Run Code Online (Sandbox Code Playgroud)

主要

serializer = StrikeSerializer(data=strike)
Run Code Online (Sandbox Code Playgroud)

我尝试在create方法中操作数据,但在此之前会引发错误.在DRF结构中我可以覆盖它,特别是将''转换为0或无?

python django django-rest-framework

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

如何在 factory-boy 中使用 create_batch 时为属性设置序列?

在 Django 中使用 factory_boy 时,我该如何实现?

模型.py

class TestModel(models.Model):
    name = CharField()
    order = IntegerField()
Run Code Online (Sandbox Code Playgroud)

食谱.py

class TestModelFactory(factory.django.DjangoModelFactory):
    class Meta:
        model = TestModel

    name = factory.LazyAttribute(lambda o: faker.word().title())
    order = 0
Run Code Online (Sandbox Code Playgroud)

测试.py

recipes.TestModelFactory.create_batch(4, order=+10)
Run Code Online (Sandbox Code Playgroud)

或者

recipes.TestModelFactory.create_batch(4, order=seq(10))
Run Code Online (Sandbox Code Playgroud)

或类似的东西,以达到这个结果:

TestModel.objects.all().values_list('order', flat=True)

[10, 20, 30, 40]
Run Code Online (Sandbox Code Playgroud)

更新

Ty @trinchet 的想法。所以我想一种解决方案是:

class TestModelFactory(factory.django.DjangoModelFactory):
    class Meta:
        model = TestModel

    name = factory.LazyAttribute(lambda o: faker.word().title())
    order = factory.Sequence(lambda n: n * 10)
Run Code Online (Sandbox Code Playgroud)

但这总是会在我的所有对象上设置序列,而我无法设置我想要的值。

一种解决方法是:

class TestModelFactory(factory.django.DjangoModelFactory):
    class Meta:
        model = TestModel

    name = factory.LazyAttribute(lambda o: faker.word().title()) …
Run Code Online (Sandbox Code Playgroud)

python testing django pytest factory-boy

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