小编Rex*_*exE的帖子

Django视图的命名约定?

我正在构建一个网站(在Django中)并且对于用于我的函数的正确命名约定感到困惑.简单的例子:假设我有一个页面让用户决定是否要查看图像A或图像B.一旦用户提交决定,该网站就会显示用户请求的图像.

以下是我在视图模块中可以使用的两个函数:

def function1(request):
    """Returns the page that presents the user with the choice between A and B"""

def function2(request):
    """Takes in the submitted form and returns a page with the image the user requested."""
Run Code Online (Sandbox Code Playgroud)

命名执行此操作的函数的约定是什么?我看到至少两种可行的方法:

选项1:function1: "decide", function2: "view_image"

选项2:function1: "view_choices", function2: "decide"

中心问题是这些功能中的每一个都做两件事:(1)处理和存储用户提交的数据,以及(2)返回下一页,其可能与用户的输入相关或不相关.那么我应该在(1)或(2)之后命名我的功能吗?

django naming-conventions

5
推荐指数
2
解决办法
3356
查看次数

Django:我在哪里调用settings.configure?

Django 文档说我可以打电话settings.configure而不是电话DJANGO_SETTINGS_MODULE.我希望我的网站项目能够做到这一点.我应该在什么文件中拨打电话,settings.configure以便在正确的时间配置我的设置?

根据Daniel Roseman的评论编辑:

我想这样做的原因是settings.configure让你传递设置变量作为kwargs dict,例如{'INSTALLED_APPS': ..., 'TEMPLATE_DIRS': ..., ...}.这将允许我的应用程序的用户在dict中指定他们的设置,然后将该dict传递给我的应用程序中的一个功能,该功能使用我的应用程序工作所需的某些设置来增强它,例如添加条目INSTALLED_APPS.

我想象的是这样的.我们打电话给我的应用程序"rexe_app".在wsgi.py中,我的应用程序的用户会这样做:

import rexe_app
my_settings = {'INSTALLED_APPS': ('a','b'), ...}
updated_settings = rexe_app.augment_settings(my_settings)
# now updated_settings is {'INSTALLED_APPS': ('a','b','c'), 'SESSION_SAVE_EVERY_REQUEST': True, ...}
settings.configure(**updated_settings)
Run Code Online (Sandbox Code Playgroud)

python django django-settings

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

使用什么行结尾来实现跨平台兼容性?

我的 webapp 允许用户下载文本文件。当前,文本文件具有 Unix 样式的\n行结尾,因此,在 Windows 上的记事本(可能还有其他 Windows 实用程序)中打开时,缺少换行符。由于记事本在我的用户中很受欢迎,我正在考虑将行尾更改为 Windows 风格的\r\n. 但这会在非 Windows 平台或替代编辑器上引起某种问题吗?

(旁注:碰巧这些文件是动态生成的,所以我可以在用户的​​操作系统上调整行尾格式,但在这一点上,我试图做到简约,而且一般也只是好奇。使用顺便说一下,姜戈。)

unix windows cross-platform line-endings text-files

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

Django:在同一浏览器中的两个会话

我有一个Django webapp,允许用户进行协作.每个用户都会获得一个链接,其中包含他们点击进入我网站的唯一代码.在第一页访问时,我将此唯一代码存储在其中request.session,然后在后续页面访问中检索它以识别用户在数据库中的记录.我还存储了关于用户及其会话的各种其他内容request.session.

我想允许在同一浏览器的不同窗口/选项卡中发生两个会话.这是为了使测试更容易.我的同事花了很多时间同时使用该网站测试多个用户.到目前为止,我一直在指示他们使用不同的浏览器或不同的浏览器配置文件,以便不共享会话cookie.但他们总是忘记这条指令(或做错了),当应用程序无法按预期工作时最终会感到困惑.

我的想法是user_id在每个URL中放置用户的唯一代码(被调用),然后细分request.session为多个字典,因此我的基于类的视图将具有:

def dispatch(...):
    user_id = kwargs['user_id']
    self.request_session = self.request.session[user_id]
Run Code Online (Sandbox Code Playgroud)

然后self.request_session像我通常那样使用这个变量:

    self.request_session['time_started'] = now
    ...
Run Code Online (Sandbox Code Playgroud)

然后在返回我的回复之前,将其分配回来:

    self.request.session[user_id] = self.request_session
Run Code Online (Sandbox Code Playgroud)

我认为这应该没问题,因为自己的代码会将两个会话隔离在2个单独的词典中,但如果Django(甚至第三方应用程序)在request.session中存储某些内容,它可能会崩溃.想知道是否有人建议采用另一种方式来处理这个问题.

python django django-sessions

5
推荐指数
0
解决办法
977
查看次数

iPhone/Windows Mobile开发平台的长期潜力

到目前为止,Apple在创建良好的全方位开发人员生态系统(SDK,应用程序分发,货币化等)方面迄今为止已经走到了最远的任何移动平台.但是,阅读之前关于移动开发的SO问题的评论(例如这个这个),似乎会出现某些批评,例如:

  • Objective-C虽然是一种很好的语言,但并不是在Apple产品之外使用.
  • 开发环境和工具与Microsoft提供的Visual Studio和.NET不匹配.

所以,我想知道苹果生态系统在长期(即2 - 4年)的可行性.如果Windows Mobile 7手机(预计将在一年左右发布)获得市场份额,那么iPhone开发环境是否能够与.NET + Visual Studio竞争(加上微软推出的任何"App Store"型分发机制) )?从我所读到的关于iPhone开发的内容来看,我得到的印象是,我们可能会看到开发人员逐渐消耗在Windows Mobile上,因为大多数人更愿意使用Microsoft的工具套件进行开发.

对于具有这些平台之一经验的开发人员,您对此主题有何印象?iPhone平台是否具有长期可行性(与Windows Mobile相比),超出了拥有更多市场份额的初始优势?

==

编辑:关于App Store优势的公平点.但我对这两个平台的长期潜力感到好奇,而微软推出自己的应用程序商店(例如SkyMarket)似乎只是一个时间问题,这使得安装变得像在iPhone上一样简单.(虽然iPhone的应用程序商店可能会占上风,因为它首先出现.)

.net iphone windows-mobile

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

为什么循环访问Visio Masters集合时C#"var"关键字不起作用?

我使用Visio API来遍历每Microsoft.Office.Interop.Visio.Master一个对象Microsoft.Office.Interop.DocumentMasters集合.

当我var按如下方式使用时,编译器只识别master为类型object并抛出错误:

foreach (var master in doc.Masters)
Run Code Online (Sandbox Code Playgroud)

相反,我必须这样做才能工作:

foreach (Visio.Master master in doc.Masters)
Run Code Online (Sandbox Code Playgroud)

为什么会这样?通常我var在foreach循环中使用没有问题.

编辑:我在使用Open方法时得到的错误master是:

'object'不包含'Open'的定义,也没有扩展方法'Open'可以找到接受'object'类型的第一个参数(你是否缺少using指令或汇编引用?)

c# type-inference

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

在Python中,我可以隐藏基类的成员吗?

我正在制作一个编程框架(基于Django),适用于编程经验有限的学生.学生应该从我的基类继承(它们本身是从Django模型,表单和视图继承而来).

我现在正在和一些学生一起测试这个问题,问题是当他们在IDE中编写代码时(大多数都是使用PyCharm),自动完成给了他们很多建议,因为有很多继承的方法和属性,90其中%与他们无关.

有没有办法隐藏这些继承的成员?目前我主要考虑如何在自动完成中隐藏它们(在PyCharm和其他IDE中).它们可以(并且可能应该)在被调用时仍然可以工作,但是不会出现在自动完成的地方.

我尝试过设置__dict__,但这并没有影响自动填充中显示的内容.我的另一个想法是使用组合而不是继承,但我必须更详细地考虑这一点.

编辑:此框架未在CS类中使用; 相反,学生将使用它来构建非CS域的应用程序.因此,我的首要任务是尽可能保持简单,即使它不是一种"纯粹"的方法.(尽管如此,我正在考虑这些论点,因为它们确实有价值.)

python pycharm

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

Python装饰器应该多久使用一次?

我最近开始尝试使用Python装饰器(以及高阶函数),因为看起来它们可能会使我的Django单元测试更加简洁.例如,而不是写:

def visit1():
    login()
    do_stuff()
    logout()
Run Code Online (Sandbox Code Playgroud)

我可以改为做

@handle_login
def visit1():
    do_stuff()
Run Code Online (Sandbox Code Playgroud)

然而,经过一些实验,我发现装饰器并不像我希望的那么简单.首先,我在不同的例子中找到了不同的装饰器语法,直到我了解到装饰器在接受参数时表现得非常不同.然后我尝试装饰一个方法,并最终知道它不起作用,因为我首先必须通过添加方法将我的装饰器变成描述符__get__.在整个过程中,我最终混淆了几次,但仍然发现调试这个"装饰"代码比通常用于Python更复杂.我现在正在重新评估我的代码中是否真的需要装饰器,因为我最初的动机是节省一些打字,而不是因为有任何真正需要高阶函数的东西.

所以我的问题是:装饰者应该被大量使用还是少量使用?避免使用它们是否更加Pythonic?

python django decorator

3
推荐指数
1
解决办法
967
查看次数

从 XSD 文件生成树形图

我想根据 XML 模式定义生成树形图。Liquid XML Studio 有一个可视化 XSD 树编辑器,让我可以将树保存为 .png 文件,这满足了我的一些需求。但我想知道是否有一个工具可以让用户将 XSD 文件转换为网页,其中可以单击、展开和折叠图表,甚至可能支持 URL 片段,以便我可以链接到特定的复杂类型,单击链接将跳转到图表的该部分。

有没有一种工具可以完成这些事情?

xml diagram xsd

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

如何阻止人们故意重新提交表单?

我正在使用Ubuntu,Apache和Django构建一个网站.我想阻止人们不止一次填写并在我的网站上提交特定表格.我知道阻止一个坚定的用户改变他的IP地址,删除他的cookie等等几乎是不可能的; 我正在寻找的东西将阻止临时用户重新提交.

在我看来,阻止来自同一IP地址的多个表单提交是实现我正在寻找的最佳方式.但是,我不确定我应该怎么做,以及我是应该从Apache还是从Django这样做.有小费吗?

编辑:我希望防止故意重新提交,而不仅仅是无意的双重提交.例如,我有一项调查,我想阻止人们多次投票.

apache django ip-address

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

如何关闭 oTree 中的调试模式?

我正在尝试以生产模式(调试 = false)从 Otree(基于 django 和 Python 的 Web 平台)运行 Web 应用程序。我找不到变量 OTREE_PRODUCTION 所在的位置。

django debugging otree

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

事实检查:.NET应用程序对反编译有多脆弱?

我在MSMobiles.com博客上发现了这篇帖子,其中包括以下内容:

.Net在很多方面都很棒,但对于商业应用呢?没门!任何人都可以查看您的源代码.高端混淆器可以提供很多帮助,但任何坚定的黑客都会在不到一天的时间内修复您的代码.尽管花费1000美元用于反盗版和混淆工具,但我从悲伤的经历中知道这一点.

然后说明如何在.NET中开发商业Windows Mobile应用程序:

准备好延迟1天,之后您的竞争对手将复制您的功能,并在Skymarket中使用相同的功能放置自己的应用程序

对于那些熟悉.NET的人:这是真话还是废话?这个问题是否以某种方式特定于Windows Mobile,还是适用于Windows上的.NET?这对我来说似乎很令人惊讶,因为我知道微软在.NET中编写了大量自己的客户端软件(许多供应商用Java编写昂贵的应用程序,显然存在相同的问题),而且他们看起来很奇怪IP可能很容易被窃取.

.net decompiling disassembly

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

如何在Javascript中读取Python列表[在Django模板中]

我正在oTree(这是用于社交实验的基于Django的环境)中编程,但遇到以下问题。我在Python中定义了一些列表,我想导入它们并在HTML模板中使用它们。如果我使用HTML打印它们,那么就可以毫无问题地看到它们,但是,一旦我需要在Javascript中使用它们,程序将无法读取它们,并且列表元素的单引号会转换为'。清单是这样导入的var filtered_elements = {{ array }};

我认为问题就在这里,因为JS无法使用它们。您对此有什么建议吗?我考虑过使用JSON,但是由于我是编程的新手,所以我不明白这是在浪费时间还是有更简单的方法。感谢您的回答!

javascript python django otree

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