小编dar*_*rse的帖子

使用python正则表达式查找图像路径

我有一个像下面这样的变量:

var = '<img src="path_1"><p>Words</p><img src="path_2>'
Run Code Online (Sandbox Code Playgroud)

它是一个字符串,但里面显然是html元素.如何使用正则表达式获取第一个路径(即path_1)?

我正在尝试这样的事情:

match = re.match(r'src=\"[\w-]+\"', var)
print match.group(0)
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'group'
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏.

python regex

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

无法散列的类型:尝试在Django中使用post_save动态添加m2m关系时出现“列表”错误

我的内容模型与标签模型具有多对多关系。保存Content对象时,我想动态添加关系。我按照以下方式进行操作。

def tag_content(obj):
    obj.tags.add([1,2,3])
    obj.is_tagged = True
    obj.save()
    return obj

class Tag(models.Model):
    name = models.CharField(max_length=255)

class Content(models.Model):
    title = models.CharField(max_length=255)
    is_tagged = models.BooleanField(default=False)
    tags = models.ManyToManyField(Tag, blank=True)

    def save(self, *args, **kwargs):
        super(Content, self).save(*args, **kwargs)

@receiver(post_save, sender = Content)
def update_m2m_relationships_on_save(sender, **kwargs):
    if not kwargs['instance'].is_tagged:
        tag_content(kwargs['instance'])
Run Code Online (Sandbox Code Playgroud)

基本上,当保存Content对象时,将使用接收方来调用post_save方法,该方法又调用tag_content方法来添加m2m关系。但是,我收到此错误:

TypeError
unhashable type: 'list'
Run Code Online (Sandbox Code Playgroud)

它专门引用.add()函数。知道为什么我会收到此错误吗?任何帮助表示赞赏。另外,请注意我在数据库中有ID为1、2和3的Tag对象。

编辑

好了,我将tag_content更改为以下内容:

def tag_content(obj):
    for tag in Tag.objects.all():
        print tag
        obj.tags.add(tag)
Run Code Online (Sandbox Code Playgroud)

这是因为add()方法接受对象实例,而不接受ID。但是,它仍然不起作用:/我没有收到任何错误,但是关系没有建立。

这特别奇怪,因为print tag命令可以工作并打印出标签。换句话说,该函数正在被调用。有什么帮助吗?顺便说一句,我正在运行Django 1.9.8。

django many-to-many django-models django-orm

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

在 Django 视图中设置 cookie

我正在尝试使用以下代码在视图中设置 cookie。

def index(request):
    resp = HttpResponse("Setting a cookie")
    resp.set_cookie('name', 'value')
    if 'name' in request.COOKIES:
        print "SET"
    else:
        print "NOT SET"
    return render(request, 'myapp/base.html', {})
Run Code Online (Sandbox Code Playgroud)

加载视图时,控制台会打印出NOT SET,这意味着未设置 cookie。在每个教程/文档中,这似乎是使用的方法。但是,它对我来说根本不起作用:/

有什么帮助吗?我正在使用 Django 1.9.8,并且我正在本地服务器上运行该应用程序,或者127.0.0.1:8000.

python django cookies

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

在 Django 中为模型创建 21 个字符的唯一字段

我知道 id 本身是唯一的,我想创建一个更长且不易猜测的独特字段。简而言之,该字段将是一个唯一的 21 个字符的字母数字字符串。我正在使用下面的代码执行此操作:

class Organization(models.Model):
    name = models.CharField(max_length=255)
    key = models.CharField(max_length=21, unique=True, blank=True, null=True)

    def save(self, *args, **kwargs):
        if self.key == '' or self.key == None:
            key = ''
            for i in range(21):
                key += random.choice(string.lowercase + string.uppercase + string.digits)

            if Organization.objects.filter(key=key).exists():
                self.save() # Try again
            else:
                self.key = key
        super(Organization, self).save(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

在该save方法中,我做了以下事情:

  • 查看对象的键是否存在。
  • 如果没有,我会生成一个 21 个字符的密钥。
  • 然后我检查具有我生成的密钥的组织是否存在。
  • 如果不是,则将对象的密钥设置为生成的密钥并保存。

这是正确的方法吗?

也许有更好的方法,代码更少?另外,请注意我的关键字段是唯一的,但也可以为空白。这会是一个问题吗?到目前为止,这效果非常好。任何帮助表示赞赏。

python django django-models

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

更改 Django 模型表单中外键的默认占位符

我的代码设置如下:

模型.py

class Category(models.Model):
    name = models.CharField(max_length=255)

class Product(models.Model):
    category = models.ForeignKey(Category)
Run Code Online (Sandbox Code Playgroud)

表格.py

class ProductForm(forms.ModelForm):
    class Meta:
        model = Product
        fields = ('category',)
        widgets = {
            #'category' : forms.TextInput(attrs={'placeholder' : 'Select the category'}),
        }
Run Code Online (Sandbox Code Playgroud)

基本上,现在,没有小部件部分,我将--------作为该字段的占位符。但是,我想获得“选择类别”,我该怎么做?谢谢!

python django django-forms

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

在 Django 中使用用户输入构建动态查询

我有一个大模型,其中存储 10 个基于文本的值和 10 个数值。像这样的东西:

class Dataset(models.Model):
    text_field_1 = models.CharField(max_length=255)
    .
    .
    .
    text_field_10 = models.CharField(max_length=255)

    number_field_1 = models.IntegerField()
    .
    .
    .
    number_field_10 = models.IntegerField()
Run Code Online (Sandbox Code Playgroud)

现在,我想做的是通过将对象传递给视图,为用户提供一种使用这些字段来过滤和排序数据集的方法。希望下面的示例展示了我想要做的事情:

obj = {
    "filters" : [
        "text_field_1='vaccines'",
        "number_field_5__gte=1000",
    ],
    "order_by" : "text_field_3, -number_field_7",
    "excludes" : [],
}

generate_query(obj) # Dataset.objects.filter(text_field_1='vaccines', number_field_5__gte=1000).order_by('text_field_3', '-number_field_7')
Run Code Online (Sandbox Code Playgroud)

因此,通过调用generate_query(obj),我们可以获取注释中的查询集。现在,由于该模型的性质,我不可能通过考虑过滤器、订单和排除的每种可能的组合来手动执行此操作。

实现这一点的最佳、最安全的方法是什么?我唯一想到的是创建一个大字符串,然后使用execoreval执行该字符串。

python django django-orm

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

Django Rest Framework 自动处理哪些类型的验证?

假设我有一个定义如下的模型:

from django.core.validators import MinValueValidator, MaxValueValidator, RegexValidator

alphanumeric_validator = RegexValidator(r'^[a-zA-Z0-9]*$', 'Only alphanumeric characters are allowed.')

class Person(model.Model):
    name = models.CharField(max_length=60, validators=[alphanumeric_validator])
    number = models.IntegerField(validators=[MinValueValidator(0), MaxValueValidator(100)])
    email = models.EmailField()
Run Code Online (Sandbox Code Playgroud)

现在,假设我正在使用 Django Rest Framework 序列化和创建 Person 对象。它看起来像这样:

from rest_framework import serializers
from .models import Person
from rest_framework.response import Response

class PersonSerializer(serializers.ModelSerializer):
    class Meta:
        model = Person
        fields = ('name', 'number', 'email')

class PostPerson(APIView):
    def post(self, request, format=None):
        serializer = PersonSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()=
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Run Code Online (Sandbox Code Playgroud)

现在,我的问题是:当我使用 验证序列化器时is_valid() …

django django-serializer django-rest-framework

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

SciKitLearn 中 MLPRegressor 的隐藏层大小是如何确定的?

假设我正在使用以下代码创建一个神经网络:

from sklearn.neural_network import MLPRegressor

model = MLPRegressor(
  hidden_layer_sizes=(100,),
  activation='identity'
)
model.fit(X_train, y_train)
Run Code Online (Sandbox Code Playgroud)

对于hidden_layer_sizes,我只是将其设置为默认值。但是,我真的不明白它是如何工作的。我的定义中隐藏层的数量是多少?是100吗?

python machine-learning neural-network scikit-learn

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

如何在 Django 中使 m2m_changed 信号原子化?

我的项目中有以下模型:

class Topping(models.Model):
    name = models.CharField(max_length=255)

class Pizza(models.Model):
    name = models.CharField(max_length=255)
    toppings = models.ManyToManyField(Topping, blank=True)

    def save(self, *args, **kwargs):
        print('Saving...')
        if self.pk:
            for topping in self.toppings.all():
                print(topping.name)

        super(Pizza, self).save(*args, **kwargs)

def toppings_changed(sender, instance, **kwargs):
    instance.save()

m2m_changed.connect(toppings_changed, sender=Pizza.toppings.through)
Run Code Online (Sandbox Code Playgroud)

基本上,每当toppings发生变化时,都会触发信号。信号所做的只是调用Pizza对象的 save 方法。无论如何,假设我有三个对象:

pizza = Pizza.objects.get(pk=1) # Number of toppings is 0
topping1 = Topping.objects.get(pk=1)
topping2 = Topping.objects.get(pk=2)
Run Code Online (Sandbox Code Playgroud)

现在,我想将这两种配料添加到我的披萨中。我使用以下代码执行此操作:

pizza = Pizza.objects.get(pk=1)
pizza.toppings.set([1, 2])
Run Code Online (Sandbox Code Playgroud)

配料设置正确,但是,披萨的 save 方法被调用两次,因为 m2m_changed 信号被调用两次,因为发生了两次更改。在提交所有更改后,如何才能仅调用一次?为了澄清,我希望添加两种配料,但我只想在所有更改结束时触发一次信号。谢谢你的帮助。

django many-to-many django-models django-orm

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

是否有可能使用python驱动的框架Django开发本机移动应用程序的后端?

我想开发一个在线移动应用程序.我正在考虑使用本地语言开发前端,因此适用于Android的Java和适用于iOS的Objective-C.但是,对于后端,我可以使用像Django这样的东西吗?

我已经使用了django一段时间了,但教程真的很缺乏,所以有人能指点我的东西,这将有助于我理解如何在由Java为Android设备开发的前端显示由Django模型处理的数据(即,通过使用XML我想).

python django android ios

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

如何使用字符串转到Django视图中的URL?

在我的模板中,我有一个带有id的DOM元素.

<h1 id="club-title">{{club.title}}</h1>
Run Code Online (Sandbox Code Playgroud)

像这样的东西.

这是一个名为club_detail的视图.此视图的网址位于urls.py中:

url(r'^club/(?P<pk>[0-9]+)/$', views.club_detail, name='club_detail'),
Run Code Online (Sandbox Code Playgroud)

在我的一个观点中,我想转到上面的url,但我还想在URL的末尾添加"#club-title",以便浏览器向下滚动到我的元素.我该怎么做呢?

目前,视图看起来像这样:

def index(request):
    .....
    return redirect('myapp:club_detail', pk = str(club.pk))
Run Code Online (Sandbox Code Playgroud)

我希望我很清楚.谢谢!

python django django-urls django-views

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

将项目附加到 Django JsonField - 获取 TypeError

在我的models.py 中,我有以下代码:

from __future__ import unicode_literals
from django.db import models
from django.contrib.postgres.fields import JSONField
import json

class Table(models.Model):
    name = models.CharField(max_length=255)
    structure = JSONField(default=json.dumps('{}'))

    def __unicode__(self):
        return self.name

class Column(models.Model):
    table = models.ForeignKey(Table, related_name='columns')
    name = models.CharField(max_length=255)
    required = models.BooleanField(default=True)

    def __unicode__(self):
        return self.name + ' FROM TABLE ' + self.table.name

    def save(self, *args, **kwargs):
        if not self.pk:
            self.table.structure[self.name] = {
                'required' : self.required,
            }
Run Code Online (Sandbox Code Playgroud)

从代码中可以看出,当一个列被保存时,如果列的必填字段被添加到表的结构中。但是,当我尝试从管理面板保存一列时,出现以下错误:

TypeError at /admin/myapp/column/add/
'unicode' object does not support item assignment
Run Code Online (Sandbox Code Playgroud)

我认为问题在于我的结构字段的默认值。我还尝试了以下方法:

structure …
Run Code Online (Sandbox Code Playgroud)

python django django-jsonfield

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

标量初始值设定项中的元素过多,我在 C 中不断遇到错误

我正在尝试编写一个获取数组中多数元素的程序。但是我收到这个奇怪的错误。我的代码是:

\n\n
#include <stdio.h>\n\nint find_majority_element(arr) {\n    int length = sizeof(arr);\n    return length;\n}\n\nint main()\n{\n    int input = { 12, 3, 2, 1, 2, 4, 2, 2, 9, 2, 2, 1, 2 };\n    printf(find_majority_element(input));\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

执行时,我收到此错误:

\n\n
$gcc -o main *.c\nmain.c: In function \xe2\x80\x98find_majority_element\xe2\x80\x99:\nmain.c:3:5: warning: type of \xe2\x80\x98arr\xe2\x80\x99 defaults to \xe2\x80\x98int\xe2\x80\x99 [-Wimplicit-int]\n int find_majority_element(arr) {\n     ^~~~~~~~~~~~~~~~~~~~~\nmain.c: In function \xe2\x80\x98main\xe2\x80\x99:\nmain.c:21:23: warning: excess elements in scalar initializer\n     int input = { 12, 3, 2, 1, 2, 4, 2, 2, 9, 2, 2, 1, 2 …
Run Code Online (Sandbox Code Playgroud)

c

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