RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-188235

Narnik Gamarnik's questions

Martin Hope
Narnik Gamarnik
Asked: 2020-01-04 23:20:17 +0000 UTC

Django GIS和传单如何将缩放转换为半径?

  • 0

在客户端,我默认zoom为 13:

  <no-ssr>
    <l-map
      :zoom="13"
      :center="[coordinates.lat, coordinates.lng]"
      :options="options"
    >
      <l-tile-layer
        url="http://{s}.tile.osm.org/{z}/{x}/{y}.png"
      />
      <l-marker
        v-for="marker in markers"
        :key="marker.id"
        :lat-lng="[marker.lat, marker.lng]"
      >
        <l-popup>{{ marker.popUpText }}</l-popup>
      </l-marker>
    </l-map>
  </no-ssr>

但在服务器端,我不想得到地图上的所有点:

Place.objects.all()

我想得到那些在用户可见范围内的东西,像这样:

from django.contrib.gis.geos import Point
from django.contrib.gis.measure import Distance  


lat = 52.5
lng = 1.0
radius = 10
point = Point(lng, lat)    
Place.objects.filter(location__distance_lt=(point, Distance(km=radius)))

问题是,如何将zoom客户端收到的转换radius为服务器请求中使用的?

javascript
  • 1 个回答
  • 10 Views
Martin Hope
Narnik Gamarnik
Asked: 2020-01-04 06:52:33 +0000 UTC

用 f-string 替换 %-string

  • 3

如何正确写表达式

"%(a)03d%(b)029d" % {"a": 1, "b": 2},

使用f 字符串

python
  • 1 个回答
  • 10 Views
Martin Hope
Narnik Gamarnik
Asked: 2020-04-02 04:43:56 +0000 UTC

测试未涵盖锁定功能

  • 0

服务.py

import blockcypher
from django.contrib.auth import get_user_model
from .utils import get_wallet_model


def generate_new_address(user, symbol):
    if isinstance(user, get_user_model()) and get_wallet_model(symbol):
        try:
            r = blockcypher.generate_new_address(coin_symbol=self.coin_symbol, api_key=api_key)
            obj = get_wallet_model(symbol).objects.create(
                user = user,
                private = r['private'],
                public = r['public'],
                address = r['address'],
                wif = r['wif']
            )
            return obj
        except Exception:
            return None

尝试锁定时,以免每次都拉取外部API,我尝试以下操作:

def fake_generate_new_address(self, user, symbol):
    if isinstance(user, get_user_model()) and utils.get_wallet_model(symbol):
        try:
            r = {
                'address': '1HL7fjCRGKC4EfPRjHVgmLmi7Bmpu8hGps',
                'private': '2a9a2a50252bf2eb24553e70861e1774aa8507af1b9497e1da01fa0086a3dfb7',
                'public': '02053a352366b3bee2e3d0d29b346822706bdf7af3cd00f7ce9d3516010d4a37c4',
                'wif': 'KxeXM1gzy5PMJ47orJiZrBK89DycjPxbq7GVS1KcV7UKAFgFTQJx'
            }
            print(r)
            obj = utils.get_wallet_model(symbol).objects.create(
                user = user,
                private = r['private'],
                public = r['public'],
                address = r['address'],
                wif = r['wif']
                )
            return obj
        except Exception:
            return None


@mock.patch('wallets.services.generate_new_address')
def test_new_address_with_valid_data(self):
    obj = services.generate_new_address(self.user, 'dash')
    assertTrue(isinstance(obj, models.Dash)

但结果是:

在此处输入图像描述

我究竟做错了什么?

这个例子只是一长串列表中的一个。以完全相同的方式,例如,不可能涵盖@property 和@cached_property 模型。

python
  • 1 个回答
  • 10 Views
Martin Hope
Narnik Gamarnik
Asked: 2020-12-04 20:44:54 +0000 UTC

如何使用 url 中错误的参数顺序进行重定向?

  • 1

正则表达式的一部分((-(?P<some_arg>[\w/]+)))*,其中参数排列成链,由符号分隔-。

在 CBV 中,我接受以下论点:

self.kwargs.get('some_arg', None)

我将它们分开,并向数据库发出请求,在其中传递参数列表

...filter(args__in=[agrs_list])...,但列表中参数的顺序无关紧要

问题是如何根据数据库中这些元素的 id 保持参数的顺序。上升。如果违反了订单,则重定向到正确的订单。

也就是我在地址栏里开车:,id3-id1-id4-id5-id2那么应该会显示id1-id2-id3-id4-id5

一般来说,不知道如何实现它。

python
  • 1 个回答
  • 10 Views
Martin Hope
Narnik Gamarnik
Asked: 2020-12-04 09:42:09 +0000 UTC

如何在正则表达式中重复整个片段?

  • 4

你好!有以下正则表达式:

^category/(?P<category_slug>[\w-]+(/[\w-]+)*)_(?P<pk>[\w-]+)/(?P<filter_code>[\w]+)(-(?P<filter_name>[\w-]+))/$

它工作得很好。结果是这样的:

/category/categoryone/categorytwo_123/filtercode-filternameone-filternametwo/

任务是使表达式的最后(后/)部分相乘成为可能:

/(?P<filter_code>[\w]+)(-(?P<filter_name>[\w-]+))

使 URL 看起来像这样:

/category/categoryone/categorytwo_123/filtercodeone-filternameone-filternametwo/filtercodetwo-filternamethree-filternamefour/
python
  • 1 个回答
  • 10 Views
Martin Hope
Narnik Gamarnik
Asked: 2020-11-03 06:38:47 +0000 UTC

通过 facebook 进行 django 社交认证

  • 0

你好。

您需要facebook使用注册django-rest-framework。为此,我使用django-rest-auth和django-allauth。该文档具有以下说明。

设置:

INSTALLED_APPS = (
    ...,
    'rest_framework',
    'rest_framework.authtoken',
    'rest_auth'
    ...,
    'django.contrib.sites',
    'allauth',
    'allauth.account',
    'rest_auth.registration',
    ...,
    'allauth.socialaccount',
    'allauth.socialaccount.providers.facebook',
    'allauth.socialaccount.providers.twitter',

)

意见:

from allauth.socialaccount.providers.facebook.views import FacebookOAuth2Adapter
from rest_auth.registration.views import SocialLoginView

class FacebookLogin(SocialLoginView):
    adapter_class = FacebookOAuth2Adapter

网址:

urlpatterns += [
    ...,
    url(r'^rest-auth/facebook/$', FacebookLogin.as_view(), name='fb_login')
]

结果是这张图:

在此处输入图像描述

在Facebook我收到App ID和注册应用程序时App Secret。

Acces token但是我在哪里可以得到这个Code?

当我在某人的应用程序中看到类似的按钮时,即acces_token在按钮本身的链接中,但我不明白它是在哪里生成的。

谁能解释一下机制,这整个事情是如何运作的?

python
  • 1 个回答
  • 10 Views
Martin Hope
Narnik Gamarnik
Asked: 2020-10-27 03:03:51 +0000 UTC

使用 word-break:break-all 和 word-wrap:break-word 的正确方法是什么?

  • 0

你好:

有一个任务,在元素中传输文本。

word-break:break-all转移一切,但笨拙:

在此处输入图像描述

word-wrap:break-word应该转移,但只转移单词,但不转移一个单词:

在此处输入图像描述

告诉我如何实现,以便正确传输单词和单词?

提前致谢!

css
  • 1 个回答
  • 10 Views
Martin Hope
Narnik Gamarnik
Asked: 2020-09-26 00:11:23 +0000 UTC

Django REST Framework 中的身份验证方法

  • 0

你好。

我找不到如何DRF使用loginand登录token?

我不是很理解普遍的含义TokenAuthentication,尤其是当我从客户端发送请求时,因为login用户也password可以从js代码中访问。

在django-tastypie中,有这样一种授权方法,但由于tastypie多种原因,它不能自行工作。

django
  • 1 个回答
  • 10 Views
Martin Hope
Narnik Gamarnik
Asked: 2020-08-04 13:01:49 +0000 UTC

如何制作字典生成器?

  • 6

任务是生成一个城市字典,这种类型:

{city: {'distance': '443 mi', 'duration': '9 hours 0 mins'}}

这是模型:

@python_2_unicode_compatible
class Route(Base):

    cities = models.ManyToManyField(City)

    @cached_property
    def cities_arrival_time(self, *args, **kwargs):
        r = lambda: x, y: requests.get(
            'https://maps.googleapis.com/maps/api/distancematrix/json?units=metric&mode=driving&origins={}&destinations={}&key={}'.format(
                x.name,
                y.name,     
                settings.GEOPOSITION_GOOGLE_MAPS_API_KEY
                )
            )

之后,您需要以duration这样的方式进行转换,以获得datetime

问题是发送我不明白如何编写一个将迭代QuerySet排除最后一个元素的生成器。

python
  • 1 个回答
  • 10 Views
Martin Hope
Narnik Gamarnik
Asked: 2020-08-03 14:50:08 +0000 UTC

如何在 QuerySet 中选择 ManyToMany 之一

  • 1

你好。

我正在使用django-cities。

任务:选择城市时,根据当前的情况,获得备选名称之一LANGUAGE_CODE

这是类中的方法:

def get_queryset(self):

    if not self.request.user.is_authenticated():
        return City.objects.none()

    qs = City.objects.prefetch_related('alt_names').all()

    if self.q:

        qs = qs.filter(alt_names__name__istartswith=self.q, alt_names__language_code=self.request.LANGUAGE_CODE)

    return qs

但是,与 QuerySet 一起,我得到了一堆相关的对象。也就是说,我可以像这样以所需的语言获取城市名称:

qs[0].alt_names.filter(language_code=self.request.LANGUAGE_CODE)[0]

您也可以这样做:

City.objects.get(name='Vancouver', country__code='CA').alt_names.filter(language_code='ru')

但这里又是关于一个单独的对象。

但是,如何将此操作与所有内容相关联QuerySet?在输出中,我想获得QuerySet所需语言的城市。

但问题是__str__模型本身City返回self.name的是原始语言。

我是否正确理解几乎唯一的出路是从AlternativeName必要城市的名称中进行选择,并准确显示这些名称,并且在保存表格时已经根据这些名称重新选择城市AlternativeName?

python
  • 1 个回答
  • 10 Views
Martin Hope
Narnik Gamarnik
Asked: 2020-07-19 03:03:47 +0000 UTC

createJS 在函数调用中注册新声音

  • 0

有一个任务是接收文本作为输入,将其转换为语音,并将音频文件写入文件系统以供后续在HTML.

当我将生成的一个传递给函数filename,并将这个传递给客户端filename,并使用模板引擎更改文件名以进行播放时,一切都运行良好。唯一的缺点是,随着时间的推移,这些文件已经足够多了,但它们本身没有任何意义。但由于它是一个原型,它可以工作,因此不需要优化。

然后我使用通常的同步处理request并通过response重新加载页面返回。

现在情况发生了一些变化。

现在client和server通信通过Websocket,filename我不发,但是每次client联系的时候我都尽量覆盖。

这是一个简单的函数:

def text_to_speach(text):

    with open(join(dirname(__file__),'resources/text.wav'),
              'wb') as audio_file:
        audio_file.write(
            text_to_speech.synthesize(str(text), accept='audio/wav',
                                      voice="en-US_AllisonVoice"))

这就是我注册音频文件的方式:

createjs.Sound.on("fileload", this.loadHandler, this);

这是调用播放文件的函数:

function loadHandler(event) {
    createjs.Sound.play("x");
}

这是处理程序onmessage:

socket.onmessage = function(e) {
    createjs.Sound.registerSound("resources/text.wav", "x"); // регистрирую файл
    loadHandler() // вызываю функцию для воспроизведения 
}

而不是经典的<audio></audio>,我决定使用这个库,至少是为了在移动浏览器上播放。

问题是即使覆盖了相同的音频文件也会播放。有时,出了点问题,整个过程都变成了赌注,直到我重新加载页面。我在日志中没有看到任何内容,我找不到错误。

如何播放刚录制的文件?

javascript
  • 1 个回答
  • 10 Views
Martin Hope
Narnik Gamarnik
Asked: 2020-07-16 22:57:24 +0000 UTC

处理页面加载默认值的正确方法是什么?

  • 4

你好。我决定做一个干净JS的,然后出现了一个我不知道如何解决的陈腐问题:

有两个功能,一个打开,一个关闭Sidebar:

function openNav() {
    document.getElementById("mySidenav").style.width = "250px";
    document.getElementById("main").style.marginLeft = "250px";
    document.getElementById("mySidenav").className += ' mySidenavOpen';
    document.getElementById("opener").style.display = "none";
}

function closeNav() {
    document.getElementById("mySidenav").style.width = "0";
    document.getElementById("main").style.marginLeft = "0";
    document.getElementById("mySidenav").classList.remove("mySidenavOpen");
    document.getElementById("opener").style.display = "block";
} 

然后我发现在我打开菜单并转到另一个页面(带有模板的常规站点,而不是 SPA)之后,当然默认情况下菜单是关闭的,为此我决定使用 cookie:

通过向其添加一组cookie来更改上述菜单打开功能:

function openNav() {
    ...
    Cookies.set('mySidenav', 'open');
}

在所有这些业务之前,我检查 cookie 中是否有值:

if (Cookies.get('mySidenav')) {
    if (Cookies.get('mySidenav') === 'open') {
        openNav();
    }
}

现在,很明显,在每次加载页面时,菜单都会打开,但只有在所有内容加载完毕后才会打开JS,并且默认情况下不会打开(呈现 HTML 时)。

告诉我如何正确实施?

如果你使用LocalStorage,那么本质不会改变,因为无论如何,你都需要等到键接收到值。

我想到了一个预加载器,但事实是页面现在加载速度非常快,因为静态权重低且缺少媒体,我不想用显眼的“加载”内容破坏整个印象。

笔记

我使用js-cookie 接收 cookie。

所有文件连接js都在结束标记之前。

为了解决这个问题,我不想改变脚本的位置。

javascript
  • 1 个回答
  • 10 Views
Martin Hope
Narnik Gamarnik
Asked: 2020-07-12 17:07:23 +0000 UTC

使用 systemd 运行

  • 1

我想用 Ubuntu 16.04 在 VPS 上部署一个程序。

如果你运行go run main.go它,那么通过访问http://ip:8000我可以看到运行程序的输出。

当我通过文件运行它时,我service需要指定二进制文件的直接路径,例如如下,虽然我出口:/usr/bin/go run /path/to/program/src/main.gosystemdsystemctl status myproject.serviceGOPATH

Jul 12 09:00:26 localhost systemd[1]: Started Simple implementation of WebSockets Chat on GoLang.
Jul 12 09:00:26 localhost go[4826]: src/main.go:7:9: cannot find package "github.com/gorilla/websocket" in any of:
Jul 12 09:00:26 localhost go[4826]:         /usr/lib/go-1.6/src/github.com/gorilla/websocket (from $GOROOT)
Jul 12 09:00:26 localhost go[4826]:         ($GOPATH not set)

命令的输出whereis go如下:

go: /usr/bin/go /usr/lib/go /usr/share/go /usr/share/man/man1/go.1.gz

是的,确实/usr/lib/go-1.6/src/没有文件夹github.com

在这样做的过程中,她处于根本地位:

root@localhost:~# ls
etc  go  gocode

root@localhost:~/go/src# ls
github.com

为什么它在我go run不指定二进制文件路径的情况下直接运行就可以工作?如何使用完整路径运行以使其工作?

添加

当我运行 go run /path/to/program/src/main.go它时,我http://ip:8000看到 404。

发生了什么?它可以连接什么?

添加

[Unit]
Description=Simple implementation of WebSockets Chat on GoLang
After=network.target

[Service]
User=root
WorkingDirectory=/var/www/SGWC
ExecStart=/usr/bin/go run /var/www/SGWC/src/main.go

[Install]
WantedBy=multi-user.target
golang
  • 1 个回答
  • 10 Views
Martin Hope
Narnik Gamarnik
Asked: 2020-07-11 03:19:23 +0000 UTC

如何制作 <input> 下拉菜单?

  • 1

你好。我正在使用Bootstrap-4并且有一个任务是制作一个下拉列表。

后台实现了搜索,前端自动补全,但是由于CSS知识太少,无法实现下拉列表。

在这个阶段,导航栏内只有一个简单的表单:

  <div class="m-b-1">
    <nav class="navbar navbar-toggleable-md navbar-inverse bg-primary">
      <form class="form-inline my-2 my-lg-0">
        <div class="form-group">
          <input type="text" class="form-control mr-sm-2" placeholder="Search" v-model="q" @input="typeInput">
          <search-item 
            v-for="item in search" 
            :item="item" 
            :key="item.id">  
           </search-item>
        </div>
        <button class="btn btn-outline-secondary my-2">Submit</button>
      </form>
     </nav>
    </div>

和原始元素模板:

  <script type="text/x-template" id="search-item">
    <ul class="form-group row">
      <a :href="item.link" class="form-control-static"><li>
        #{ item.title }
      </li></a>
    </ul>
  </script>

提前致谢。

PS 我保证我会记住 CSS3 :)

css
  • 1 个回答
  • 10 Views
Martin Hope
Narnik Gamarnik
Asked: 2020-07-08 16:11:03 +0000 UTC

QuerySet ManyToMany 和列表​​生成器

  • 0

所以我创建了两个列表:

devices = []
for i in context['services']:
    for z in i.devices.all():
        devices.append(z)

spare_parts = []
for i in context['services']:
    for z in i.spare_parts.all():
        spare_parts.append(z)

为了简洁和美观,我想使用生成器来实现,但它不起作用。

我正在尝试这样做:

[k for k in [[z for z in i.devices.all()] for i in context['services']]]
[k for k in [[z for z in i.spare_parts.all()] for i in context['services']]]

但我得到这个结果:

[[<Device: asdasd>], []]
[[], []]

你需要这样的东西:

[<Device: asdasd>]
[]

无论你用生成器尝试什么方法,总会有额外的括号。几乎在任何情况下,我都会得到一个列表QuerySet'ов

python-3.x
  • 1 个回答
  • 10 Views
Martin Hope
Narnik Gamarnik
Asked: 2020-07-06 21:26:49 +0000 UTC

链接模型中的 get_absolute_url 或带有 ManyToMany 链接的 sitemap.xml

  • 0

你好。

需要在不同的 URL 上提供模型的实例。例如,让一组商品在所有城市都有售。

为清楚起见:

class Product(models.Model):
    cities = models.ManyToManyField(City)

假设有30个城市,150种商品,如果我选择所有商品,我得到150个对象,如果全部30个城市,那么30个对象。

综合而言,我制作的 url 可以接受城市和产品:

urlpatterns = [
    url(
        regex=r'^(?P<city>[\w.@+-]+)/(?P<product>[\w.@+-]+)/$',
        view=views.CityProductView.as_view(),
        name='city_product'
    )
]

在视图中,是这样的:

class ProductCity(DetailView):
    model = Product

    def get_object(self):
        product = get_object_or_404(Product city__name__iexact=self.kwargs['city'])
        return service

事实上,网站本身提供了 30 * 150 个页面,这正是所需要的。

问题:

如何将所有这些网址提供给sitemap?

如有必要,在页面参数(过滤器)sitemap下生成完全相同的问题。GET

如果该方法items可以执行以下操作:

def items(self):
    items = []
    cities = City.objects.all()
    for city in cities:
        products = Product.objects.filter(cities__in=[city])
        items.extend(products)
    return items

怎么办location,应该返回get_absolute_url()?

他们如何在公告牌上做到所有类别都在每个城市?我不太明白其中的逻辑。

我习惯于编写 get_absolute_url() 模型并为此方法编写测试,但在这种情况下呢?

提前致谢!

python
  • 1 个回答
  • 10 Views
Martin Hope
Narnik Gamarnik
Asked: 2020-07-05 06:10:18 +0000 UTC

返回父级,选择的项目数

  • 1

有app:

    <div id="app">
      <form>
        <div class="form-group">
          <input type="text" class="form-control" v-model="q" @input="typeInput">
          <search-item 
            v-for="item in search" 
            :item="item" 
            :key="item.id"
            v-on:click="changeStateItem">  
           </search-item>
        </div>
        <div class="form-group row">
          <p class="form-control-static">#{ checkedItems }</p>
        </div>
      </form>
    </div>

有一个模板:

    <template id="search-item">
      <div class="form-group row" @click="clickedItem">
        <p class="form-control-static" @click="inStock =! inStock">
        <i v-show="inStock" class="fa fa-check"></i>
        Название: #{ item.title }</p>
      </div>
    </template>

任务是显示<p class="form-control-static">#{ checkedItems }</p>所选元素的数量 ( item in search)。

这是代码本身:

  Vue.component('search-item', {
    props: ['item', 'value'],
    delimiters: ["#{", "}"],
    template: '#search-item',
    data: function() {
      return {
        inStock: false,
      }
    },
    methods: {
      clickItem: function() {
        this.$emit('click')
      },  
    }
  })

  var app = new Vue({
    el: '#app',
    delimiters: ["#{", "}"],
    data: {
      endpoint: 'http://' + window.location.host + '/search/autocomplete/?q=',
      q: '',
      search: [],
      checkedItems: [],
    },
    methods: {
      onClick: function() {
        this.$http.post(this.endpoint + this.q).then(
           function(response){
            this.search = response.data
        }, function(error){
          //console.log(error)
        })
      },
      changeStateItem: function() {
        //
      }
    },
  })

现在一切正常,除了将结果返回给父模型。在帮助下,this.$emit('click')可以点击组件,但我不知道如何传输 inStock. 我想要checkedItems: []那些被选中的组件 ( inStock == true)

我才学习 vue.js 一天半,所以不要太苛刻地判断。

对我来说,这是一种奇怪的动物。在此之前,我只与jQuery.

vue.js
  • 1 个回答
  • 10 Views
Martin Hope
Narnik Gamarnik
Asked: 2020-06-28 09:46:39 +0000 UTC

单击时将文件传递给输入值

  • 0

你好。
我在JS方面很弱,所以我提前为一个愚蠢的问题道歉。

有一个功能,通过点击,<a id="save">SAVE</a>提供一个文件下载。

Recorder.setupDownload = function(blob, filename){
    var url = (window.URL || window.webkitURL).createObjectURL(blob);
    var link = document.getElementById("save");
    link.href = url;
    link.download = filename || 'output.wav';
}

现在我们需要使用一个简单的表单来保存这个文件,以便后端进一步处理这个文件。

<form method="POST" action="save" id="formsave" enctype="multipart/form-data">
    <input id="inputwav" type=file name=file>
</form>

是不是这样:

Recorder.setupDownload = function(blob, filename){
    var form = getElementById("formsave")
    var input = getElementById("inputwav")
    var url = (window.URL || window.webkitURL).createObjectURL(blob);
    input.value = url;
    form.submit();
}

浏览器返回错误:SecurityError: The operation is insecure.

情况是保存前,文件不存在。我不明白如何获取此文件。

JavaScript代码,当然不是我的,不然我也不会问这样的问题:)

使用此代码的示例

文件,具有此功能。

提前致谢。

javascript
  • 1 个回答
  • 10 Views
Martin Hope
Narnik Gamarnik
Asked: 2020-06-26 22:36:20 +0000 UTC

django-channels systemd达芙妮

  • 1

几个小时试图解决使用达芙妮时加载环境变量的问题

在此之前,我在使用Gunicorn时使用了几乎相同的配置,并且一切正常。

最初我尝试在配置中做同样的事情gunicorn:EnvironmentFile=/var/www/gglobal/.envvars,但是我得到了这样的错误:

Jun 26 17:37:47 p435061.kvmvps daphne[14073]: 2017-06-26 17:37:47,542 DEBUG    get 'RDS_HOSTNAME' casted as 'None' with default '<NoValue>'
Jun 26 17:37:47 p435061.kvmvps daphne[14073]: 2017-06-26 17:37:47,543 DEBUG    get 'RDS_PORT' casted as 'None' with default '<NoValue>'
Jun 26 17:37:47 p435061.kvmvps daphne[14073]: 2017-06-26 17:37:47,543 DEBUG    get 'REDIS_ENDPOINT_ADDRESS' casted as 'None' with default '<NoValue>'
Jun 26 17:37:47 p435061.kvmvps daphne[14073]: 2017-06-26 17:37:47,543 DEBUG    get 'REDIS_PORT' casted as 'None' with default '<NoValue>'
Jun 26 17:37:47 p435061.kvmvps daphne[14073]: 2017-06-26 17:37:47,544 DEBUG    get 'DJANGO_SENTRY_DSN' casted as 'None' with default 'https://56bb387ee6ef4e7b
Jun 26 17:37:47 p435061.kvmvps daphne[14073]: 2017-06-26 17:37:47,544 DEBUG    get 'DJANGO_SENTRY_CLIENT' casted as 'None' with default 'raven.contrib.django.
Jun 26 17:37:47 p435061.kvmvps daphne[14073]: 2017-06-26 17:37:47,544 DEBUG    get 'DJANGO_SENTRY_LOG_LEVEL' casted as '<class 'int'>' with default '20'
Jun 26 17:37:47 p435061.kvmvps daphne[14073]: 2017-06-26 17:37:47,544 DEBUG    get 'DJANGO_SENTRY_LOG_LEVEL' casted as '<class 'int'>' with default '20'
Jun 26 17:37:47 p435061.kvmvps daphne[14073]: 2017-06-26 17:37:47,545 DEBUG    get 'DJANGO_ADMIN_URL' casted as 'None' with default '<NoValue>'

但是有了这一切,服务就开始了!

并且 nginx 错误日志发誓该*.sock文件丢失:

2017/06/26 17:47:51 [crit] 12682#12682: *59 connect() to unix:/var/www/project/project.sock failed (2: No such file or directory) while connecting to upstream, client: 5.152.1.201, server: mydomain.com, request: "GET / HTTP/2.0", upstream: "http://unix:/var/www/project/project.sock:/", host: "mydomain.com"

使用下面的选项,我得到一个稍微不同的错误:

django.core.exceptions.ImproperlyConfigured:设置 DJANGO_SECRET_KEY 环境变量

然后我决定尝试编写一个小的 bash 脚本来显式导出变量:

while IFS='' read -r line || [[ -n "$line"  ]]; do
        export $line
        echo exporting $line
done < "$1"

并在使用之前运行此脚本ExecStartPre,但它也不起作用。更准确地说,结果与前一种情况相同,它发誓要使用未导出的DJANGO_SECRET_KEY.

这里daphne.service:

[Unit]
Description=daphne daemon
After=network.target


[Service]
ExecStartPre=-bash /tmp/env.sh  /var/www/project/.envvars
Environment=DJANGO_SETTINGS_MODULE=config.settings.production
User=project
Group=www-data
WorkingDirectory=/var/www/project
ExecStart=/var/www/venv/bin/daphne -b unix:/var/www/project/project.sock  config.asgi:channel_layer -v2

[Install]
WantedBy=multi-user.target

在这里gunicorn.service:

[Unit]
Description=gunicorn daemon
After=network.target


[Service]
EnvironmentFile=/var/www/project/.envvars
User=project
Group=www-data
WorkingDirectory=/var/www/project
ExecStart=/var/www/venv/bin/gunicorn --workers 3 --bind unix:/var/www/project/project.sock config.wsgi:application --env DJANGO_SETTINGS_MODULE='config.settings.production'

[Install]
WantedBy=multi-user.target

现在它们不同了,你可以说“做和那个有效的一样”,但它不是那样工作的,这就是为什么我试图做所有的事情,包括打字。

我真的不明白问题是什么。

谁有什么想法?

django
  • 1 个回答
  • 10 Views
Martin Hope
Narnik Gamarnik
Asked: 2020-06-26 01:21:58 +0000 UTC

Django 用户的在线状态

  • 1

你好。需要了解网站上当前有哪些用户在线。

一种选择是使用is_authenticated,但我知道如果用户关闭浏览器并保持身份验证,则请求将返回True。

另一种选择是使用WebSockets, 或专门Channels. 但是为了一个简单的任务,我真的不想使用它Daphne,但是,这个选项会 100% 满足你的需要——如果用户关闭浏览器,它会工作on_disconnect,我会知道用户是现在离线。

对您如何监控应用程序中的在线用户感兴趣。

提前感谢您提供任何有用的信息。

django
  • 4 个回答
  • 10 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5