小编Leo*_*rdo的帖子

Django,urlpatterns中的name参数

我正在按照我的urlpatterns所在的教程:

urlpatterns = patterns('',
    url(r'^passwords/$', PasswordListView.as_view(), name='passwords_api_root'),
    url(r'^passwords/(?P<id>[0-9]+)$', PasswordInstanceView.as_view(), name='passwords_api_instance'),
    ...other urls here...,
)
Run Code Online (Sandbox Code Playgroud)

PasswordListViewPasswordInstanceView应该是基于类的观点.我无法弄清楚name参数的含义.它是传递给视图的默认参数吗?

python django url-pattern urlconf django-class-based-views

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

我应该在npm上发布我的模块的源代码吗?

我希望这个问题不会过于自以为是,我要问的是最佳/普遍的做法.

我正在发布一个用ES6编写的npm模块,并使用babel汇总转换为ES5和UMD .

文件结构可以总结如下:

/coverage/
/dist/
/node_modules/
/src/
/test/
/tools/
.editorconfig
.eslintrc
.gitattributes
.gitignore
.travis.yml
CHANGELOG.md
CONTRIBUTING.md
LICENSE.txt
package.json
README.md
Run Code Online (Sandbox Code Playgroud)

源代码在其中/src/,编译代码在/dist/.
这些目录是.gitignored:

  • 覆盖
  • DIST
  • node_modules

用户真正使用的确是内容/dist/.

我一直在使用带有构建过程的入门套件:

  1. 拿原件 package.json
  2. 从中删除所有脚本和dev相关字段
  3. 把它复制到dist
  4. 还将文件LICENSE和README复制到dist(未触及)

整个包源将在GitHub上发布,但我不确定在npm上发布什么:

A)整个文件结构(删除/coverage//node_modules/),顶层package.json具有相关文件的入口点dist

要么

B)只发布dist精简内容package.json和README&LICENSE.我知道只是发布内容/dist会使源地图无效.

这里的常见做法是什么?

javascript node.js npm ecmascript-6 babeljs

13
推荐指数
2
解决办法
1990
查看次数

具有具体方法的 Python 抽象类

我想知道在python(3)中,抽象类是否可以具有具体方法。
虽然这似乎有效,但我不确定这是在 python 中执行此操作的正确方法:

from abc import ABCMeta, abstractclassmethod, abstractmethod 

class MyBaseClass:
    __metaclass__ = ABCMeta

    @property
    @abstractmethod
    def foo_prop(self):
        """Define me"""
        pass

    @abstractclassmethod
    def get_something(cls, param1, param2, param3):
        """This is a class method, override it with @classmethod """
        pass

    @classmethod
    def get(cls, param1, param2):
        """Concrete method calling an abstract class method and an abstract property""" 
        if param1 < cls.foo_prop:
            raise Exception()
        param3 = param1 + 42
        item = cls.get_something(param1, param2, param3)
        return item


class MyConcreteClassA(MyBaseClass):
    """Implementation """

    foo_prop = 99 …
Run Code Online (Sandbox Code Playgroud)

python oop inheritance abstract-class class

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

Django从模型或视图调用REST API?

我必须从Django调用外部REST API.外部数据源模式类似于我的Django模型.我应该保持远程数据和本地数据同步(可能与问题无关)

问题:

  1. 从哪里调用外部Web服务最合乎逻辑的地方是:从模型方法还是从视图?
  2. 我应该将调用远程API的代码放在外部模块中,然后由视图调用吗?
  3. 是否可以有条件地选择数据源?是否意味着根据REST API或"新鲜度"来呈现REST API或本地模型中的数据?

谢谢

编辑:对于愿意结束这个问题的人:我从一开始就用三个简单的问题解决了这个问题,到目前为止我收到了很好的答案,谢谢.

python django rest django-models django-views

10
推荐指数
1
解决办法
3554
查看次数

Django,无法在子文件夹中创建应用程序

我在Windows上并尝试在名为Apps的公共文件夹中创建一个新应用程序.在对myApp文件夹已经存在内部应用程序.我正在从项目根目录运行:

python manage.py startapp myApp Apps\myApp
Run Code Online (Sandbox Code Playgroud)

我得到:

Error: 'Apps\\myApp' is not a valid app name. Please use only numbers, letters and underscores.
Run Code Online (Sandbox Code Playgroud)

我不知道为什么那个双反斜杠.我还尝试使用正斜杠来确定:

python manage.py startapp myApp Apps/myApp
Run Code Online (Sandbox Code Playgroud)

我明白了

Error: 'myApp' conflicts with the name of an existing Python module and cannot be used as an app name. Please try another name.
Run Code Online (Sandbox Code Playgroud)

我无法理解它是Windows还是Python问题.

windows django path

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

在Django中与其他用户共享对象

我在Django中为一个非常复杂的系统建模.我将在这里仅发布它的相关部分,我将展示简化的用例图表,以更好地表达我的想法.

我基本上有两种类型的用户:卖家和客户.

  1. 一个卖家 " 获得 "一个客户,是指卖方现在有客户的个人信息,并可以与他/她交互.
    卖方不能与他未获得的客户互动. 在此输入图像描述

  2. 一个卖家创建模型的层次结构相关的对象(在分段每个模型与外键,其父连)
    在此输入图像描述

  3. 一个卖家 共享创建的对象及其所有相关对象与一些客户 在此输入图像描述

  4. 授权客户可以:

    • R -ead Box模型的一些属性
    • R -ead和U -pdate Item模型的一些属性
    • 无法访问Item模型的某些属性

    在此输入图像描述

问题:

  • :创建用户之间关系的最佳方法是什么?
    我已经看到django-relationship可能很有用.
  • B:在Django中与其他用户共享 Model实例的最佳方法是什么?
    在我的情况下,默认情况下,如果未明确共享,则客户 无法访问卖方创建的任何模型.
  • C:如果我只共享Box模型,它是否隐含意味着它的所有相关模型(Box模型的外键)都将被共享?
  • D: 每个用户控制字段权限的最佳方法是什么?
    可以Django的监护人是有用的吗?

django django-models django-permissions django-users django-guardian

8
推荐指数
1
解决办法
1962
查看次数

Django 代理模型的继承和多态性

我正在开发一个我没有启动的 Django 项目,并且面临继承问题。
我有一个大模型(在示例中简化)称为MyModel它应该代表不同类型的项目。

的所有实例对象MyModel都应具有相同的字段,但方法行为根据项目类型而有很大差异。

到目前为止,它是使用一个MyModel名为 的单个字段来设计的item_type
然后 MyModel 中定义的方法检查该字段并使用多个 if 执行不同的逻辑:

def example_method(self):
    if self.item_type == TYPE_A:
        do_this()
    if self.item_type == TYPE_B1:
        do_that()
Run Code Online (Sandbox Code Playgroud)

更重要的是,某些子类型有许多共同点,因此可以说子类型BC代表第一级继承。然后这些类型有子类型,例如B1, B2, C1, C2(在下面的示例代码中更好地解释)。

我想说这不是执行多态性的最佳方法。

现在我想更改这些模型以使用真正的继承。

由于所有子模型都有相同的字段,我认为多表继承是没有必要的。我正在考虑使用代理模型,因为只有它们的行为应该根据它们的类型而改变。

这是我提出的伪解决方案:

ITEM_TYPE_CHOICES = (
    (TYPE_A, _('Type A')),
    (TYPE_B1, _('Type B1')),
    (TYPE_B2, _('Type B2')),
    (TYPE_C1, _('Type C1')),
    (TYPE_C2, _('Type C2')))


class MyModel(models.Model):
    item_type = models.CharField(max_length=12, choices=ITEM_TYPE_CHOICES)

    def common_thing(self):
        pass …
Run Code Online (Sandbox Code Playgroud)

python django proxy-classes django-models django-inheritance

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

通过Bower在bootstrap sass中包含font-awesome

我已经安装bootstrap-sass-officialfont-awesome使用了凉亭.我已经尝试了所有可能的组合,使用scss在bootstrap中包含fontawesome.

最可能的解决方案是在我的应用程序main.scss文件中指定以下内容:

$fa-font-path: "../bower_components/font-awesome/fonts";
@import "font-awesome/scss/font-awesome";
@import '../../bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap.scss';
Run Code Online (Sandbox Code Playgroud)

@import "bootstrap/glyphicons";在主bootstrap.scss文件中注释掉.

如果我启动我grunt servehttp://localhost:9000/(我使用从默认Web应用程序的自耕农一个gruntfile)我可以看到我的应用程序运行.

我可以main.css在所有fontawesome类中看到我的文件,并在其中查看fonts(../bower_components/font-awesome/fonts/fontawesome-webfont.eot)位置的引用URL .

一切似乎都没问题,但每当我使用FontAwesome图标时,例如<span class="fa-star"></span>我得到一个空的方框而不是图标.我错过了一些我看不到的东西......

twitter-bootstrap font-awesome

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

从特定提交的Pip安装提示"已满足要求"

我正在使用pip和一个requirements.txt文件来处理我的virtualenv中的python包.我有一个我从Github安装的特定包,所以在我的文件中我有:

git+ssh://git@github.com/myuser/mypackage.git#egg=mypackage
Run Code Online (Sandbox Code Playgroud)

由于我经常使用这个包,我需要重新安装它,但是: pip install -r requirements.txt让我回来

Requirement already satisfied (use --upgrade to upgrade)...
Run Code Online (Sandbox Code Playgroud)

对于具有新版本的requirements.txt中的所有包.

如果我运行pip install -r requirements.txt --upgrade它尝试升级我的所有包(我想要),但我只想升级mypackage.在requirements.txt中,我试图添加一个特定的提交,如下所示:

git+ssh://git@github.com/myuser/mypackage.git@733c5b616da27cba14478c24b#egg=mypackage
Run Code Online (Sandbox Code Playgroud)

但是,当我再次运行pip时它抛出:

Requirement already satisfied (use --upgrade to upgrade)..bla bla bla
Run Code Online (Sandbox Code Playgroud)

题:

  • 有没有办法使用requirements.txt文件可能升级特定的包mypackage
  • 我需要指定#egg=mypackage吗?

python git pip virtualenv requirements.txt

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

Sublime Text 3总是使用制表符而不是空格来缩进

我想在ST3中总是使用空格而不是制表符来缩进.
我把这些放在我的设置中:

"translate_tabs_to_spaces": true,
"convert_tabspaces_on_save": true, // for a plugin
"detect_indentation": false,
"tab_size": 4
Run Code Online (Sandbox Code Playgroud)

该设置convert_tabspaces_on_save用于通过插件ExpandTabsOnSave强制转换选项卡 - >空格至少在文件保存

但无论如何,ST3使用制表符而不是空格来缩进新打开的文件.

它可能是一个错误,还是我使用了错误的设置?

提示:任何时候我Preferences.sublime-settings间接修改文件,例如使用命令Package Control: Disable Package保存文件而不是空格

formatting indentation sublimetext sublimetext3

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