小编Buc*_*uck的帖子

如何将其他参数传递给自定义python排序函数

背景:

我想知道如何实现高级排序函数,我可以将它作为元组元素传递给python'sorted'函数的key参数.

这是一个描述我想做的事情的例子:

class Book:

      def __init__(self, name, author, language, cost):
          self.name = name
          self.author = author
          self.language=language
          self.cost = cost


bookList = [list of books]

firstLanguage = "Armenian"
possibleLanguages = ["English", "Spanish", "Armenian", "French", "Chinese", "Swahili"]
possibleLanguages.remove("Armenian")

sortedBookList = sorted(bookList, key=(sortByName,
    sortByFirstLanguage(firstLanguage), sortByLanguages(possibleLanguages) ))
Run Code Online (Sandbox Code Playgroud)

基本上我想实现上面描述的'sortByFirstLanguage'和'sortByLanguages'函数,这样我就可以将它们作为'key'参数的元组项传递给python'sorted'函数.下面是一些关于自定义排序函数应该是什么样子的示例代码:

def sortByName(elem):
    return elem.name

def sortByFirstLanguage(elem, firstLanguage):
    if elem.language == firstLanguage:
       return 1
    else:
       return -1


def sortByLanguages(elem, possibleLanguages):
    if elem.language in possibleLanguages:
       return possibleLanguages.index(elem.language)
Run Code Online (Sandbox Code Playgroud)

ADDT.细节:

  1. 我正在使用python 2.7
  2. 这个问题实际上是使用Django查询集而不是对象列表,但为了演示目的,我认为对象列表具有相同的用途.
  3. 此排序的目标是首先按指定的语言排序,然后返回&&按其默认排序(在这种情况下为列表排序)对剩余项目进行排序.

题:

我如何告诉'key'参数将额外的参数'firstLanguage'&&'possibleLanguages'传递给自定义排序函数,如上所示?

python sorting django django-queryset python-2.7

9
推荐指数
1
解决办法
2608
查看次数

CNAME设置显示"错误请求(400)"

背景:

我的Django应用程序位于@ www.name-of-app.rhcloud.comThrough dns-provider.comI own:www.name-of-app.com

CName设置如下: name-of-app.com重定向到www.name-of-app.com,www.name-of-app.com设置为CNAME别名www.name-of-app.rhcloud.com

现在,如果我尝试从任何浏览器访问www.name-of-app.com,我收到"错误请求(400)"错误.

我玩过以下设置:

  • 我可以成功重定向www.name-of-app.comwww.name-of-app.rhcloud.com,但在切换回CNAME后,我遇到了同样的错误.
  • 我添加了必要的别名ala:rhc alias add www.name-of-app.com-a myApp
  • 我已经尝试了删除&&然后重新添加上述别名的步骤,但没有效果.

如果我从我的开发工作站运行主机命令,我看到别名已正确设置.

cmd:host www.name-of-app.com (first 2 lines of output are listed below):www.name-of-app.com is an alias forname-of-app.rhcloud.com .name-of-app.rhcloud.com is an alias forex-std-nodeXXX.prod.rhcloud.com `.

我正在与之合作dns-provider.com,但他们还没有提出任何问题.

题:

如何解决此CNAME问题?在特定时刻,这似乎超出了我的控制范围,超出了我的专业领域.

dns cname openshift

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

如何从模板中访问模型表单的外键属性?

描述:

我想知道如何访问模板代码中的外键字段。

鉴于示例 models.py 代码:

class Publisher(models.Model):
    name = models.CharField(max_length=30)
    address = models.CharField(max_length=50)


class Book(models.Model):
    title = models.CharField(max_length=100)
    publisher = models.ForeignKey(Publisher)
Run Code Online (Sandbox Code Playgroud)

和示例 forms.py 代码:

class BookForm(ModelForm):
     class Meta:
         model = Book
         fields = ['title', 'publisher']
Run Code Online (Sandbox Code Playgroud)

和示例 views.py 代码:

def sample(request):
  bf = BookForm(request.POST)
  return render(request, 'sample.html', {'BookForm': bf})
Run Code Online (Sandbox Code Playgroud)

题:

使用“BookForm”从模板代码中正确访问值:publisher.name所需的代码行是什么?

django django-templates django-models django-forms

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

如何将.pcm文件转换为.wav文件(脚本)

我想在Python脚本中使用诸如SOX之类的工具将.pcm文件转换为.wav文件.该工具需要跨平台兼容(Windows和Linux).有什么建议?

python linux windows audio scripting

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

Django 中支付处理的好解决方案

我正在尝试为我的 Django 应用程序选择一个支付处理解决方案,并想知道一些好的通用解决方案。

以下看起来相当有希望:

https://www.djangopackages.com/grids/g/payment-processing/(通用解决方案) https://github.com/johnboxall/django-paypal(仅限paypal)

这是问题的一个有点过时的版本的链接:Django 支付处理

题:

什么是/是一些用于支付处理的安全和当前的 Django 应用程序解决方案?

python django payment-processing django-paypal

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

Django 管理表单失败,因为“form-TOTAL_FORMS”和“form-INITIAL_FORMS”未正确填充

信息:

我想通过以下提供的示例来创建嵌套表单:

http://yergler.net/blog/2009/09/27/nested-formsets-with-django/

此页面上的教程似乎非常好&&它正在尝试解决我遇到的确切问题。

当没有 POST 请求数据(即我们从数据库执行初始填充)时,views.py 文件中的此实现似乎存在问题。

代码可以在上面提供的 URL 中看到(如果需要,我可以发布一些代码,但我担心它会影响这里提供的信息)。

这是失败的 views.py 代码(以粗体显示):

block = get_object_or_404(models.Block, id=block_id)

if request.method == 'POST':
    formset = forms.BuildingFormset(request.POST, instance=block)

    if formset.is_valid():
        rooms = formset.save_all()

        return redirect('block_view', block_id=block.id)

else:
    formset = forms.BuildingFormset(instance=block)  #This is the line that is throwing the ValidationError 
Run Code Online (Sandbox Code Playgroud)

我收到的错误消息是:

ValidationError at "urlName":
[u'ManagementForm data is missing or has been tampered with']
Run Code Online (Sandbox Code Playgroud)

我已经挖得更深了,看来这个失败发生在 site-packages/django/forms/formsets.py 行

is_valid()检查失败,因为一些managementform所需的数据(形状TOTAL_FORMS的,形状和INITIAL_FORMS形状MAX_NUM_FORMS)是无效的。下面是 self.errors 的实际输出:

{u'TOTAL_FORMS': [u'This field is required.'], u'INITIAL_FORMS': [u'This field is required.']}
Run Code Online (Sandbox Code Playgroud)

代码:

edit_building.html: …

django django-forms django-views

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

如何使用Django发送电子邮件作为别名

背景:

我有一个使用Django构建的网站,我遇到了以下难题.我有一封后端电子邮件,我们称之为luckyducky@gmail.com.现在我还有一个域名电子邮件,直接转发到luckyduck@gmail.com,名为support@luckyducky.com.

目前我的Django Email设置如下:

EMAIL_HOST_USER="luckyducky@gmail.com"
EMAIL_HOST_PASSWORD="password"
Run Code Online (Sandbox Code Playgroud)

这很好,但我希望从'support@luckyducky.com'发送电子邮件.

注意:

包括Python社区作为一个整体,也许问题可以在Django邮件包装器函数之外解决.

题:

如何设置此重定向?这意味着,当我在Django后端配置的真正电子邮件是luckyducky@gmail.com时,如何在别名"support@luckyducky.com"下发送电子邮件?

python django django-email django-settings

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