当Python和所有软件包安装在Docker容器中时,我正在尝试使Python linters在VS Code中工作。
我以前没有用过短绒。但是据我所知,短绒如何工作(至少在VS Code中),我需要将VS Code指向Python解释器,并在需要时设置包的路径。如果一切都安装在Docker容器中,这将成为一个问题。
我正在尝试仅使用Docker功能。我想到的是以下内容:
我尝试使用Docker文档中的Django示例项目来实现所有功能,因此我的文件如下所示
docker-compose.yml
version: '3'
services:
db:
image: postgres
web:
build: .
command: python3 manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
- ./.vscode/python:/usr/local/lib/python3.7 # The problem is here
ports:
- "8000:8000"
depends_on:
- db
Run Code Online (Sandbox Code Playgroud)
Dockerfile
FROM python:3
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)
requirements.txt
Django
psycopg2
Run Code Online (Sandbox Code Playgroud)
- ./.vscode/python:/usr/local/lib/python3.7注释行时,Django项目有效。但是,当我尝试以与安装文件夹相同的方式绑定安装Python文件/code夹时,我不仅没有本地可访问此文件夹的内容,而且Django项目停止工作。
是否可以通过这种方式挂载Python可执行文件?也许有更好的方法在使用VS Code和Docker时使用任意的Python linter?最好避免:
当include()从 Django 应用程序到项目的 urlconf 时urls.py,某种应用程序的名称(或命名空间)应指定为:
app_namespace在include((pattern_list, app_namespace), namespace=None)主urls.py或者
app_name应用程序中的变量urls.py。因为,我猜是 Django 2,第二种方法是首选方法,尽管我从 Django 3 文档中复制粘贴了第一个函数签名。但这不是重点。
我目前对namespace参数的理解include()是它是我在使用reverse().
app_namein app'surls.py或app_namespacein main的目的是什么urls.py?
这些是完全一样的吗?
Django 如何使用它?
我在这里找到的现有问题(和答案)解释了我应该如何指定它而不是为什么。
我正在尝试查询和注释模型中的一些数据:
class Feed(models.Model): # Feed of content
user = models.ForeignKey(User, on_delete=models.CASCADE)
class Piece(models.Model): # Piece of content (video or playlist)
removed = models.BooleanField(default=False)
feed = models.ForeignKey(Feed, on_delete=models.CASCADE)
user = models.ForeignKey(User, on_delete=models.CASCADE)
Run Code Online (Sandbox Code Playgroud)
在以下查询中未使用其他字段,因此在此跳过了它们。
在我看来,我需要获取经过身份验证的用户的所有供稿的queryset。批注应包含所有未删除的数量。
最初,Piece模型不包含removed字段,并且一切都可以与queryset一起运行,如下所示:
Feed.objects.filter(user=self.request.user).annotate(Count('piece'))
Run Code Online (Sandbox Code Playgroud)
但是随后我将字段添加removed到Piece模型中,只需要计算未删除的部分:
Feed.objects.filter(user=self.request.user)
.annotate(Count('piece'), filter=Q(piece__removed=False))
Run Code Online (Sandbox Code Playgroud)
它给了我以下错误:
'WhereNode' object has no attribute 'output_field'
Run Code Online (Sandbox Code Playgroud)
这只是django在错误页面上输出的内容的一小部分,因此,如果这还不够的话,请告诉我我需要在问题中包含的内容。
我试图在这里和那里包含output_field诸如models.IntegerField()或models.FloatField()(正确导入)之类的选项,但是出现了一些我未在此处提供的错误,因为我认为这些操作没有意义。
我正在使用Django 2.0.3
django django-models django-aggregation django-annotate django-2.0