在Django中使用sitemap的常规方法是:
from django.contrib.sitemaps import Sitemap
from schools.models import School
class SchoolSitemap(Sitemap):
changefreq = "weekly"
priority = 0.6
def items(self):
return School.objects.filter(status = 2)
Run Code Online (Sandbox Code Playgroud)
然后在学校模型中我们定义:
def get_absolute_url(self):
return reverse('schools:school_about', kwargs={'school_id': self.pk})
Run Code Online (Sandbox Code Playgroud)
在这种实现中,我在sitemap.xml中为一所学校提供了一个About链接
问题是我的学校有多个页面:关于,教师,学生和其他人,我希望所有要呈现的是sitemap.xml
这样做的最佳方法是什么?
当我试图在Django app中启动芹菜工作时:
celery -A myApp worker -l info
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
File "/home/alexander/.pyenv/versions/3.5.1/envs/myApp/lib/python3.5/site-packages/celery/utils/collections.py", line 134, in __getattr__
type(self).__name__, k))
AttributeError: 'Settings' object has no attribute 'worker_state_db'
Run Code Online (Sandbox Code Playgroud)
如果你知道如何解决它,请写下你的想法!
用Lighthouse测试网络应用后我有这样的错误:
系统不会提示用户安装Web App浏览器可以主动提示用户将您的应用添加到主屏幕,这可以提高参与度.学到更多.
失败:服务工作者未成功提供清单的start_url.
这里描述的所有标准都满足:
清单文件通过脚本呈现.重要的变数是
scope_url = 'https://website.com/app/'
start_url = 'https://website.com/app/about/'
Run Code Online (Sandbox Code Playgroud)
ServiceWoker.js非常简单:
self.addEventListener('push', function(e) {
...
});
self.addEventListener('notificationclick', function (e) {
...
);
Run Code Online (Sandbox Code Playgroud)
Web应用程序和sw.js由start_url提供.
我还能检查什么?
编辑1.当我尝试从Chrome控制台"添加到主屏幕"时,我得到:
Site cannot be installed: the page does not work offline
什么接近这个评论
google-chrome lighthouse service-worker progressive-web-apps
我决定将我的管理网站的一些功能移到前端.功能包括使用一些外键内联管理一个模型.
为此,我已经安装了django-dynamic-formset JQuery插件(链接git)并且已经挣扎了几天.这是其中一个问题.
Django管理员已经实现了相同的功能.我可以根据需要添加,修改,删除内联和修改模型实例.我想知道为什么我应该使用这个JQuery插件,为什么在互联网上没有这么多关于这个主题的好教程?
我需要一个很好的最近的例子,说明如何在没有第三方JS文件的情况下在前端使用django formsets或inline formsets.如果它有链接(不是复选框)来删除内联项并添加将正确添加新内联的按钮,我会很高兴.
更具体一点,因为这个问题被认为过于宽泛:
我有两个模型School和SchoolPlace:
class School(models.Model):
name = models.CharField(_('School name'), max_length=100)
class SchoolPlace(models.Model):
school = models.ForeignKey(School, verbose_name=_('school place'), related_name='school_places', blank=True, null=True)
name = models.CharField(_('School place name'), max_length=200)
city = models.ForeignKey(City, blank=True, null=True, verbose_name=_('city'),
help_text='city')
Run Code Online (Sandbox Code Playgroud)
还有相应的形式:
class SchoolForm(forms.ModelForm):
name = forms.CharField(
label=_('Name'),
widget=forms.TextInput(attrs={
'placeholder': _('school name')}),
max_length=100, required=True)
class SchoolPlaceForm(forms.ModelForm):
name = forms.CharField(label=_('Name'),
widget=forms.TextInput(
attrs={'placeholder': _('school place name')}),
max_length=200,
required=False)
city = forms.ModelChoiceField(label=_('City'),
widget=forms.Select(attrs={'class': 'ui search dropdown'}),
queryset=City.objects.all(), required=False)
class Meta:
model …Run Code Online (Sandbox Code Playgroud) 我在制作中使用Django应用程序与Celery和Amazon SQS一起工作.每天在我的芹菜日志中我都可以看到有SSL错误:
[ERROR/MainProcess] Empty body: SQSError: 599 gnutls_handshake() failed: An unexpected TLS packet was received.
Run Code Online (Sandbox Code Playgroud)
尝试重新连接到代理时出现下一个错误:
[2016-12-14 16:06:28,917: WARNING/MainProcess] consumer: Connection to broker lost. Trying to re-establish the connection...
Traceback (most recent call last):
File "/home/ubuntu/virtualenvs/env/lib/python3.5/site-packages/celery/worker/consumer/consumer.py", line 318, in start
blueprint.start(self)
File "/home/ubuntu/virtualenvs/env/lib/python3.5/site-packages/celery/bootsteps.py", line 119, in start
step.start(parent)
File "/home/ubuntu/virtualenvs/env/lib/python3.5/site-packages/celery/worker/consumer/consumer.py", line 584, in start
c.loop(*c.loop_args())
File "/home/ubuntu/virtualenvs/env/lib/python3.5/site-packages/celery/worker/loops.py", line 88, in asynloop
next(loop)
File "/home/ubuntu/virtualenvs/env/lib/python3.5/site-packages/kombu/async/hub.py", line 284, in create_loop
poll_timeout = fire_timers(propagate=propagate) if scheduled else 1
File "/home/ubuntu/virtualenvs/env/lib/python3.5/site-packages/kombu/async/hub.py", line 137, in …Run Code Online (Sandbox Code Playgroud) 我正在运行此处所示的简单 Docker-compose 示例
这是 Dockerfile:
FROM python:2.7
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/
Run Code Online (Sandbox Code Playgroud)
这是 docker-compose.yml:
version: '2'
services:
db:
image: postgres
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
Run Code Online (Sandbox Code Playgroud)
当我尝试使用 docker-compose 启动示例时,它给出以下内容:
alex@universe:~/projects/testcompose$ docker-compose up
testcompose_db_1 is up-to-date
Recreating testcompose_web_1
Attaching to testcompose_db_1, testcompose_web_1
web_1 | python: can't open file 'manage.py': [Errno 2] No such file or …Run Code Online (Sandbox Code Playgroud) 我正在按照本教程展示如何在Django中使用Formsets.本教程使用django-dynamic-formset JQuery插件,该插件支持在Django admin中创建formsets.
假设我有以下形式:
<form enctype="multipart/form-data" method="post">
{% csrf_token %}
{% for place_form in places_formset %}
<div class="place_formset">
<div class="required field">
<label>{{ place_form.name.label }}</label>
<div class="ui icon input">
{{ place_form.name }}
</div>
</div>
</div>
{% endfor %}
{{ places_formset.management_form }}
<br>
<button type="submit">Save changes</button>
Run Code Online (Sandbox Code Playgroud)
当我渲染表单时,我得到"添加项目"链接,这允许我添加另一个表单到formset.(也意味着js和JQuery加载并工作)但我没有看到应该删除每个表单实例的链接.
这里有关于从内联formset中删除项目的解释,但没有关于常规formset的说法.
到目前为止我做了什么:
我试图包括:
{{ place_form.DELETE }}
Run Code Online (Sandbox Code Playgroud)
进入形式认为django-dynamic-formset将用"删除"链接替换所有呈现的复选框,但它没有发生.
2.我也尝试使用显式的can_delete渲染set类,但它没有解决问题:
PlaceFormSet = formset_factory(PlaceForm, can_delete=True)
Run Code Online (Sandbox Code Playgroud)
3.不是按字段呈现表单字段,而是尝试使用{{places_formset}}呈现它.在这种情况下,表单使用删除复选框呈现,但没有替换为删除链接.此外,添加项链接已消失.
我还能做些什么来启用删除链接?
我继承了QGraphicsPolygonItem,想在该项目的顶部绘制一个QPixmap。项目本身和像素图应绘制有圆角。
你怎么会这样
我正在尝试运行一组芹菜任务,如下所示:
@shared_task
def run_sms_task(smstask_id):
smstask = SmsTask.objects.get(id = smstask_id)
if smstask:
phones = []
for user in smstask.userlist.users.all():
phones.append(user.profile.phone)
g = group(send_sms_async(phone, smstask.text) for phone in phones)
g.apply_async()
smstask.status = 3
smstask.save()
Run Code Online (Sandbox Code Playgroud)
该任务部分执行,最后抛出以下错误:
[2016-11-01 13:42:03,362: ERROR/MainProcess] Task sms_center.tasks.run_sms_task[d575fb59-6b0a-4ea6-851f-0902ef6bd7b9] raised unexpected: AttributeError("'NoneType' object has no attribute 'app'",)
Traceback (most recent call last):
File "/home/alexander/.pyenv/versions/d/lib/python3.5/site-packages/celery/app/trace.py", line 240, in trace_task
R = retval = fun(*args, **kwargs)
File "/home/alexander/.pyenv/versions/d/lib/python3.5/site-packages/celery/app/trace.py", line 438, in __protected_call__
return self.run(*args, **kwargs)
File "/home/alexander/PycharmProjects/d/sms_center/tasks.py", line 25, in run_sms_task
g.apply_async()
File …Run Code Online (Sandbox Code Playgroud) 我的大多数Celery任务的ETA都比Amazon SQS定义的最大可见性超时长.
Celery 文档说:
这会导致ETA /倒计时/重试任务出现问题,执行时间超过可见性超时; 事实上,如果发生这种情况,它将再次执行,并再次循环执行.
因此,您必须增加可见性超时以匹配您计划使用的最长ETA的时间.
同时它还说:
截至撰写本文时,AWS支持的最大可见性超时为12小时(43200秒):
如果我使用SQS,我该怎么做才能避免在我的工作人员中多次执行任务?
django ×7
python ×6
celery ×4
django-admin ×1
django-forms ×1
formset ×1
jquery ×1
lighthouse ×1
qpainter ×1
qpixmap ×1
qt ×1
sitemap ×1