小编Dar*_*ech的帖子

Django可选的url参数

我有一个像这样的Django网址:

url(
    r'^project_config/(?P<product>\w+)/(?P<project_id>\w+)/$',
    'tool.views.ProjectConfig',
    name='project_config'
),
Run Code Online (Sandbox Code Playgroud)

和我的views.py:

def ProjectConfig(request, product, project_id=None, template_name='project.html'):
    ...
    # do stuff
Run Code Online (Sandbox Code Playgroud)

问题是我希望project_id参数是可选的.我想这样,project_id并且/project_config/都是同样有效的url模式,所以IF /project_config/12345abdce/传递,然后我可以使用它.就目前而言,如果我尝试访问没有project_id参数的url,我会得到404 .

python django django-urls django-views

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

没有找到带有参数'()'和关键字参数'{}'的Django Reverse

嗨,我有一个令人愤怒的问题.

我有这样的网址模式:

# mproject/myapp.urls.py

url(r'^project/(?P<project_id>\d+)/$','user_profile.views.EditProject',name='edit_project'),
Run Code Online (Sandbox Code Playgroud)

它在浏览器中工作正常,但是为了测试,当我在shell中执行此操作时:

from django.test import Client
from django.core.urlresolvers import reverse

client= Client()
response = client.get(reverse('edit_project'), project_id=4)
Run Code Online (Sandbox Code Playgroud)

我害怕:

NoReverseMatch: Reverse for 'edit_project' with arguments '()' and keyword arguments '{}' not found.
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?

django django-testing

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

使用virtualenv pip安装Matplotlib错误

我正在尝试在新的virtualenv中安装matplotlib.

当我做:

pip install matplotlib
Run Code Online (Sandbox Code Playgroud)

要么

pip install http://sourceforge.net/projects/matplotlib/files/matplotlib/matplotlib-1.1.0/matplotlib-1.1.0.tar.gz
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

building 'matplotlib._png' extension

gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -fPIC -  DPY_ARRAY_UNIQUE_SYMBOL=MPL_ARRAY_API -DPYCXX_ISO_CPP_LIB=1 -I/usr/local/include -I/usr/include -I. -I/home/sam/django-projects/datazone/local/lib/python2.7/site-packages/numpy/core/include -I. -I/usr/include/python2.7 -c src/_png.cpp -o build/temp.linux-x86_64-2.7/src/_png.o

src/_png.cpp:10:20: fatal error: png.h: No such file or directory

compilation terminated.

error: command 'gcc' failed with exit status 1
Run Code Online (Sandbox Code Playgroud)

任何人都知道发生了什么事?

任何帮助非常感谢.

python pip matplotlib virtualenv

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

在Flask中进行异步任务

我在Flask中编写了一个应用程序,除了WSGI同步和阻塞之外,它的工作原理非常好.我有一个特别的任务,它调用第三方API,该任务可能需要几分钟才能完成.我想拨打电话(实际上是一系列电话)并让它运行.控制权归还给Flask.

我的观点如下:

@app.route('/render/<id>', methods=['POST'])
def render_script(id=None):
    ...
    data = json.loads(request.data)
    text_list = data.get('text_list')
    final_file = audio_class.render_audio(data=text_list)
    # do stuff
    return Response(
        mimetype='application/json',
        status=200
    )
Run Code Online (Sandbox Code Playgroud)

现在,我想做的就是拥有这条线

final_file = audio_class.render_audio()
Run Code Online (Sandbox Code Playgroud)

运行并提供在方法返回时执行的回调,而Flask可以继续处理请求.这是我需要Flask异步运行的唯一任务,我想就如何最好地实现它做一些建议.

我看过Twisted和Klein,但我不确定它们是否过度,因为Threading就足够了.或者也许Celery是一个不错的选择?

python asynchronous flask

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

Django检查ManyToMany字段中是否有对象

我有一个很简单的问题需要解决.我有合作伙伴模型,其中有> = 0个与之关联的用户:

class Partner(models.Model):
    name = models.CharField(db_index=True, max_length=255)
    slug = models.SlugField(db_index=True)
    user = models.ManyToManyField(User)
Run Code Online (Sandbox Code Playgroud)

现在,如果我有一个User对象并且我有一个Partner对象,那么检查User是否与Partner关联的最Pythonic方法是什么?我基本上想要一个语句,如果User与之关联,则返回True Partner.

我试过了:

users = Partner.objects.values_list('user', flat=True).filter(slug=requested_slug)
if request.user.pk in users:
    # do some private stuff
Run Code Online (Sandbox Code Playgroud)

这有效,但我感觉有更好的方法.另外,这很容易卷入装饰器,请记住我需要一个命名参数(slug)和一个请求对象(user).

任何帮助将非常感激.

django django-models django-views

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

角度过滤器恰好在对象键上

我有一个像这样的小角度应用程序:

HTML

<body ng-app>
  <div ng-controller="Ctrl">
    <div ng-repeat="user in users | filter:1">
      <span>{{ user.username }}, {{ user.id }}</span>
    </div>
  </div>
</body>
Run Code Online (Sandbox Code Playgroud)

app.js

function Ctrl($scope) {
  $scope.users = [
    {"id":1,"username":"simon",},
    {"id":8,"username":"betty",},
    {"id":14,"username":"archie",},
    {"id":3,"username":"jumbo1"},
  ]
}
Run Code Online (Sandbox Code Playgroud)

产量

simon, 1
archie, 14
jumbo1, 3
Run Code Online (Sandbox Code Playgroud)

我想要做的是仅在id字段上过滤过滤器参数AND过滤器的完全匹配.

基本上,我希望输出为:

产量

simon, 1
Run Code Online (Sandbox Code Playgroud)

我正在使用Angular 1.2.

angularjs angularjs-ng-repeat

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

Django多数据库路由

我一直在使用手动数据库选择来处理一个有两个单独的数据库的项目.我在设置中定义了我的数据库.经过一些进一步的阅读后,似乎数据库路由实际上就是这样.但是,在阅读了这里的文档和一些相关帖子后,我比以往更加困惑.

在我的设置中,我有:

DATABASES = {
    'default': {
       .... 
    },
    'my_db2': {
       ....
    }
}

DATABASE_ROUTERS = ['myapp2.models.MyDB2Router',]
Run Code Online (Sandbox Code Playgroud)

我知道我必须像我这样定义我的路由器类(我认为在myapp2.models.py中):

class MyDB2Router(object):
"""A router to control all database operations on models in
the myapp2 application"""

def db_for_read(self, model, **hints):
    if model._meta.app_label == 'myapp2':
        return 'my_db2'
    return None

def db_for_write(self, model, **hints):
    if model._meta.app_label == 'myapp2':
        return 'my_db2'
    return None

def allow_relation(self, obj1, obj2, **hints):
    if obj1._meta.app_label == 'myapp2' or obj2._meta.app_label == 'myapp2':
        return True
    return None

def allow_syncdb(self, …
Run Code Online (Sandbox Code Playgroud)

python django

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

Django从post_save信号访问ManyToMany字段

我有一个Django模型,我想在保存后或刚刚保存后修改对象权限.我尝试了一些解决方案,post_save信号似乎是我想要做的最佳候选者:

    class Project(models.Model):
        title = models.CharField(max_length=755, default='default')
        assigned_to = models.ManyToManyField(
            User, default=None, blank=True, null=True
        )
        created_by = models.ForeignKey(
            User,
            related_name="%(app_label)s_%(class)s_related"
        )


    @receiver(post_save, sender=Project)
    def assign_project_perms(sender, instance, **kwargs):
        print("instance title: "+str(instance.title))
        print("instance assigned_to: "+str(instance.assigned_to.all()))
Run Code Online (Sandbox Code Playgroud)

在这种情况下,创建项目时,信号会触发,我会看到titleassigned_to字段的空列表.

保存后如何访问保存的assigned_to数据?

django django-signals django-models

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

Django存储匿名用户数据

我有一个django模型,它存储来自表单输入的用户和产品数据:

def ProductSelection(request, template_name='product_selection.html'):
    ...
    if user.is_authenticated():
        user = request.user
    else:
        # deal with anonymous user info
    project = Project.objects.create(
        user=user,
        product=form.cleaned_data["product"],
        quantity=form.cleaned_data["product_quantity"],
    )
Run Code Online (Sandbox Code Playgroud)

当然,这对于经过身份验证的用户来说很好,但我也希望能够存储匿名用户项目,如果可能的话,在最终注册和验证时将它们与用户关联起来.

我的想法是创建名称= some_variable(时间戳与随机哈希串联?)的匿名用户,然后将该用户名保存在会话数据中.如果我确保该会话变量(如果存在)用于记录该用户的所有项目活动,我应该能够在注册时使用用户的真实凭据更新项目.

这过于复杂和脆弱吗?我是否有可能不必要地节省数千行数据?这个常见问题的最佳方法是什么?

任何有关这方面的指导都将非常感激.

django django-forms

25
推荐指数
2
解决办法
9286
查看次数

在Flask路线中捕获任意路径

我有一个简单的Flask路由,我想捕获文件的路径.如果我<path>在规则中使用,它适用/get_dir/one但不适用/get_dir/one/two.如何捕获任意路径,以便path='/one/two/etc传递给视图函数?

@app.route('/get_dir/<path>')
def get_dir(path):
    return path
Run Code Online (Sandbox Code Playgroud)

python werkzeug flask

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