小编Ale*_*kov的帖子

站点地图和具有多个网址的对象

在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

这样做的最佳方法是什么?

python sitemap django

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

启动芹菜工人抛出"无属性'worker_state_db'"

当我试图在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)

如果你知道如何解决它,请写下你的想法!

python django celery

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

WebApp:失败:服务工作者未成功提供清单的start_url

用Lighthouse测试网络应用后我有这样的错误:

系统不会提示用户安装Web App浏览器可以主动提示用户将您的应用添加到主屏幕,这可以提高参与度.学到更多.

失败:服务工作者未成功提供清单的start_url.

这里描述的所有标准都满足:

  1. 该网站通过HTTPS提供.
  2. 服务工作者已注册.
  3. 服务工作者的范围包括您审核的页面以及Web应用程序清单的start_url属性中指定的页面.
  4. 存在Web应用程序清单并满足以下条件:具有有效的名称属性.有一个有效的short_name属性.有一个有效的start_url属性.具有有效的显示属性,值为standalone,fullscreen或minimal-ui.指定至少为192像素x 192像素的图标.

清单文件通过脚本呈现.重要的变数是

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

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

使用内联在前端启用Django管理功能

我决定将我的管理网站的一些功能移到前端.功能包括使用一些外键内联管理一个模型.

为此,我已经安装了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)

python django django-admin formset inline-formset

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

Django + Celery + SQS - > boto.exception.SQSError:SQSError:599 gnutls_handshake()

我在制作中使用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)

python django celery

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

Docker-compose 教程不起作用“python:无法打开文件'manage.py”

我正在运行此处所示的简单 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 docker-compose

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

对于与django-dynamic-formset一起使用的Django Formsets,不显示删除链接

我正在按照教程展示如何在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}}呈现它.在这种情况下,表单使用删除复选框呈现,但没有替换为删除链接.此外,添加项链接已消失.

我还能做些什么来启用删除链接?

django jquery django-forms

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

如何绘制带有圆角的QPixmap?

我继承了QGraphicsPolygonItem,想在该项目的顶部绘制一个QPixmap。项目本身和像素图应绘制有圆角。

你怎么会这样

qt qpixmap qpainter

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

Celery,Group任务,AttributeError:'NoneType'对象没有属性'app'

我正在尝试运行一组芹菜任务,如下所示:

@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)

python django celery

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

Celery SQS +任务复制+ SQS可见性超时

我的大多数Celery任务的ETA都比Amazon SQS定义的最大可见性超时长.

Celery 文档说:

这会导致ETA /倒计时/重试任务出现问题,执行时间超过可见性超时; 事实上,如果发生这种情况,它将再次执行,并再次循环执行.

因此,您必须增加可见性超时以匹配您计划使用的最长ETA的时间.

同时它还说:

截至撰写本文时,AWS支持的最大可见性超时为12小时(43200秒):

如果我使用SQS,我该怎么做才能避免在我的工作人员中多次执行任务?

python celery

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