最近我读了"Fluent python"并理解了==operator 如何使用python对象,使用__eq__()方法.但它如何与intpython2中的实例一起使用?
>>> a = 1
>>> b = 1
>>> a == b
True
>>> a.__eq__(b)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'int' object has no attribute '__eq__'
Run Code Online (Sandbox Code Playgroud)
在python3中都a.__eq__(b)返回True
嗨,我想显示我的问题模型的答案数
我的模特:
class Question(models.Model):
text = models.TextField()
title = models.CharField(max_length=200)
date = models.DateTimeField(default=datetime.datetime.now)
author = models.ForeignKey(CustomUser)
tags = models.ManyToManyField(Tags)
def __str__(self):
return self.title
class Answer(models.Model):
text = models.TextField()
date = models.DateTimeField(default=datetime.datetime.now)
likes = models.IntegerField(default=0)
author = models.ForeignKey(CustomUser)
question = models.ForeignKey(Question)
Run Code Online (Sandbox Code Playgroud)
我的看法:
def all_questions(request):
questions = Question.objects.all()
answers = Answer.objects.filter(question_id=questions).count()
return render(request, 'all_questions.html', {
'questions':questions, 'answers':answers })
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,查看所有答案的显示计数.对于每个问题模型,我如何过滤此计数?
我的模型有很多链接:
class Travel(BaseAbstractModel):
tags = models.ManyToManyField(
Tag,
related_name='travels',
)
owner = models.ForeignKey(
'users.TravelUser',
related_name='travel_owner'
)
payment = models.ForeignKey(
Payment,
related_name='travels',
)
country = models.ForeignKey(
Country,
related_name='travels,
)
........
Run Code Online (Sandbox Code Playgroud)
其中许多模型只有两个具有唯一名称和图像的字段.我为每个模型创建了序列化器并将它们放入TravelSerializer
class TravelBaseSerializer(DynamicFieldsModelSerializer):
owner = UserSerializer(required=False)
tags = TagSerializer(many=True)
payment = PaymentSerializer()
country = CountrySerializer()
Run Code Online (Sandbox Code Playgroud)
根据我覆盖的文档create()和update.
问题是,当我发送JSON数据时,Django从嵌套的序列化器创建每个模型.但我想只创建Travel实例.此外,我希望不仅接收和响应序列化对象pk字段.
更新
我解决了这个问题,把代码放在答案中.现在我可以接收并响应Serializer数据而无需创建对象.但我认为DRF提供了更优雅的方法.这是我与DRF的第一个项目,也许我想念一些东西,这是一个更简单的解决方案.
{{ test.date}}我的模板以以下格式呈现标签-
2015-12-15T23:55:33.422679
当我尝试使用 django 的内置模板标记对其进行格式化时date,它不显示任何内容。
我尝试过的变体:
{{ test.date|date:"SHORT_DATE_FORMAT" }}
{{ test.date|date:"D d M Y" }}
模型.py:
class Human(models.Model):
name = models.CharField(max_length=50,default='',blank=False)
class Test(models.Model):
human = models.ForeignKey(Human)
date = models.DateTimeField(default=datetime.now)
Run Code Online (Sandbox Code Playgroud)
视图.py:
def list(request):
h = Human.objects.all()
s=[]
for her in h:
t = h.test_set.all()
s.extend(t)
context = RequestContext(request, {'test_list': s,})
return render_to_response('template.html', context)
Run Code Online (Sandbox Code Playgroud)
然后我在模板中使用它,如下所示:
{% for test in test_list %}
{{test.date}}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
我缺少什么?
我有这样的形式:
class PasswordForm(forms.Form):
CHOICES=[('uppercase','Uppercase'),
('lowercase','Lowercase'),
('numbers','Numbers'),]
password_length = forms.ChoiceField(choices=[(x, x) for x in range(1, 32)],)
options = forms.MultipleChoiceField(
widget=forms.CheckboxSelectMultiple, choices=CHOICES,)
Run Code Online (Sandbox Code Playgroud)
如何在模板中自定义复选框字段?
我知道我怎么能用其他领域来做,比如forms.Charfield()我的password_length,只是
<form action="" method="post">
{{form.some_field}}
</form>
Run Code Online (Sandbox Code Playgroud)
但它确实适用于我MultipleChoiceField,我尝试了很多东西
{{form.uppercase}},{{form.options.choices.uppercase}}并尝试{% for %}循环.
它只是没有返回,我没有通过浏览器检查器在html中看到它.
我在前端有Django REST和Angular的简单应用程序,我的图像上传有问题.
我的模特:
class Photo(models.Model):
img = models.ImageField(upload_to='photos/', max_length=254)
text = models.CharField(max_length=254, blank=True)
Run Code Online (Sandbox Code Playgroud)
当我通过表单发送图像时,文本上传得很好,但图像具有空值.
从浏览器响应:
{ "IMG":空, "文": "测试"}
这是self.data.request我上传图片时打印的:
QueryDict:{'text':['test'],'InMemoryUploadedFile:filename.jpg(image/jpeg)]}
Serializer很简单ModelSerializer,只有两个模型字段.
视图:
class PhotoViewSet(viewsets.ModelViewSet):
queryset = Photo.objects.all()
serializer_class = PhotoSerializer
parser_classes = (MultiPartParser, FormParser)
def perform_create(self, serializer):
serializer.save(img=self.request.data.get('file'))
photo_router = DefaultRouter()
photo_router.register(r'photo', PhotoViewSet)
Run Code Online (Sandbox Code Playgroud)
对于图像上传我使用lib ng-file-upload,我尝试了另一种上传方式,图像也是null.
角度代码:
var app = angular.module('myApp', ['ngRoute', 'ngFileUpload']);
app.config(function ($routeProvider) {
$routeProvider
.when('/', {
templateUrl: 'http://127.0.0.1:8000/static/js/angular/templates/home.html'
})
});
app.config(['$httpProvider', function($httpProvider) {
$httpProvider.defaults.xsrfCookieName = 'csrftoken';
$httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken';
}]);
app.controller('MyCtrl', ['$scope', …Run Code Online (Sandbox Code Playgroud) javascript django file-upload angularjs django-rest-framework
我使用 aiohttp 处理 websockets 和 postgresql 监听/通知,使用 aiopg 驱动程序作为服务器之间的传输队列。
我的服务器设置的一部分:
def init(loop):
...
app = Application(loop=loop)
app.on_startup.append(connect_db)
app.on_startup.append(start_background_tasks)
app.on_cleanup.append(cleanup_background_tasks)
return app
def create_app(loop):
loop = asyncio.get_event_loop()
app = init(loop)
return app
Run Code Online (Sandbox Code Playgroud)
这是我的信号:
dsn = 'dbname=test user=root password=test host=127.0.0.1'
async def connect_db(app):
app['db'] = await aiopg.connect(dsn)
return app
async def listen_events_from_db(app):
cursos = await app['db'].cursor()
await cursos.execute("LISTEN test")
try:
while True:
msg = await app['db'].notifies.get()
# Here will be a coroutine which will send msg to connected websockets
print('msg: ', msg.payload) …Run Code Online (Sandbox Code Playgroud) 我部署了我的django项目和我的联系表格stoped work.我在堆栈上尝试了一些提示,但它不起作用,请帮助我PLZ.
这是我的本地设置:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'mymail@gmail.com'
EMAIL_HOST_PASSWORD = 'password'
Run Code Online (Sandbox Code Playgroud)
和我的观点:
def contact_form(request):
form = ContactForm(request.POST or None)
if form.is_valid():
message = form.cleaned_data.get('message')
email = form.cleaned_data.get('email')
subject = 'contact form'
from_email = email
to_email = (settings.EMAIL_HOST_USER,)
contact_message = '%s, from %s' %(message, from_email)
send_mail(subject, contact_message, from_email, to_email, fail_silently=False)
form = ContactForm()
request.session.set_expiry(10)
request.session['pause'] = True
return render(request, 'contact_form.html', {'form':form})
Run Code Online (Sandbox Code Playgroud)
现在,当我发送消息时,我有"内部服务器错误".
我在Django上构建SPA,我有一个庞大的函数,有许多if语句用于检查我的对象字段的状态名称.像这样:
if self.state == 'new':
do some logic
if self.state == 'archive':
do some logic
Run Code Online (Sandbox Code Playgroud)
等等.我读好书"流利蟒蛇"现在,我再提一下@singledispatch装饰,它看起来那么大,但它可以在此改变功能只能diferent类型像参数应用的str,int等等
的问题是,如果在Python或Django的方式分离逻辑喜欢在我的庞大功能中使用覆盖功能singledispatch吗?
每次.py在Django项目中创建文件时,都需要添加两个字符串
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
Run Code Online (Sandbox Code Playgroud)
有什么办法可以在PyCharm中为新创建的python文件设置一些模式?
django ×7
python ×5
aiohttp ×1
angularjs ×1
django-views ×1
file-upload ×1
forms ×1
javascript ×1
postgresql ×1
pycharm ×1
python-2.7 ×1