小编dee*_*ena的帖子

Django urls.py中的r是什么?

基本的urls.py得到这样的陈述,

(r'^home/$', homeview),
Run Code Online (Sandbox Code Playgroud)

实际上这是什么r
有什么用?

python django django-urls django-views

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

使用django查询不违反DRY的重构方法?

我写了一个查询具有已知查找类型的模型.表示输入类型传递的标志kwargs.下面kwarg将解释查找以及传递的kwargs.

  1. 数据库哈希(随机对实例没有唯一性db_hash=True)
  2. 对象的名称("John"或"Sam"为name=True)
  3. 对象的ID.(obj.ids 124,或134as id=True)
  4. 实例(没有任何标志的objs)

例如,只是为了方法调用的名称,

self.check_all_routes("Sam", "452", name=True)
Run Code Online (Sandbox Code Playgroud)

我想重构下面的方法来减少它在违反DRY时产生的混乱.

def check_all_routes(self, driver, route, **kwargs):
    _hash = kwargs.get('db_hash')
    _name = kwargs.get('name')
    _id = kwargs.get('id')

    if _hash:
        return self.model.objects.filter(
            driver__db_hash=driver,
            route__db_hash=route
        ).prefetch_related().select_related().values_list('route_number')
    if _name:
        return self.model.objects.filter(
            driver__name=driver,
            route__name=route
        ).prefetch_related().select_related().values_list('route_number')
    if _id:
        return self.model.objects.filter(
            driver_id=driver,
            route_id=route
        ).prefetch_related().select_related().values_list('route_number')

    return self.model.objects.filter(
        driver=driver,
        route=route
    ).prefetch_related().select_related().values_list('route_number')
Run Code Online (Sandbox Code Playgroud)

可以做些什么来使它不违反DRY.

python django refactoring dry django-queryset

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