我有一个像下面这样的变量:
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)
任何帮助表示赞赏.
我的内容模型与标签模型具有多对多关系。保存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。
我正在尝试使用以下代码在视图中设置 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.
我知道 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方法中,我做了以下事情:
这是正确的方法吗?
也许有更好的方法,代码更少?另外,请注意我的关键字段是唯一的,但也可以为空白。这会是一个问题吗?到目前为止,这效果非常好。任何帮助表示赞赏。
我的代码设置如下:
模型.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)
基本上,现在,没有小部件部分,我将--------作为该字段的占位符。但是,我想获得“选择类别”,我该怎么做?谢谢!
我有一个大模型,其中存储 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执行该字符串。
假设我有一个定义如下的模型:
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() …
假设我正在使用以下代码创建一个神经网络:
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吗?
我的项目中有以下模型:
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 信号被调用两次,因为发生了两次更改。在提交所有更改后,如何才能仅调用一次?为了澄清,我希望添加两种配料,但我只想在所有更改结束时触发一次信号。谢谢你的帮助。
我想开发一个在线移动应用程序.我正在考虑使用本地语言开发前端,因此适用于Android的Java和适用于iOS的Objective-C.但是,对于后端,我可以使用像Django这样的东西吗?
我已经使用了django一段时间了,但教程真的很缺乏,所以有人能指点我的东西,这将有助于我理解如何在由Java为Android设备开发的前端显示由Django模型处理的数据(即,通过使用XML我想).
在我的模板中,我有一个带有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)
我希望我很清楚.谢谢!
在我的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) 我正在尝试编写一个获取数组中多数元素的程序。但是我收到这个奇怪的错误。我的代码是:
\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}\nRun 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) django ×10
python ×9
django-orm ×3
many-to-many ×2
android ×1
c ×1
cookies ×1
django-forms ×1
django-urls ×1
django-views ×1
ios ×1
regex ×1
scikit-learn ×1