小编dav*_*vid的帖子

如何在Dockerfile CMD中使用变量?

在我的Dockerfile中:

ENV PROJECTNAME mytestwebsite
CMD ["django-admin", "startproject", "$PROJECTNAME"]
Run Code Online (Sandbox Code Playgroud)

错误:

CommandError: '$PROJECTNAME' is not a valid project name
Run Code Online (Sandbox Code Playgroud)

什么是最快的解决方法?Docker是否有计划在更高版本的Docker中"修复"或引入此功能?

注意:如果我从Docker文件中删除CMD行然后运行Docker容器,我可以从容器内部手动运行Django-admin startproject $ PROJECTNAME,它将创建项目...

docker dockerfile

69
推荐指数
4
解决办法
4万
查看次数

为什么我无法通过'docker-compose run web'命令运行django迁移?

所以我通过docker-compose部署django,postgress和nginx容器,我有一个我似乎无法弄清楚的问题.

为了解决我的Django应用程序中的以下错误,我知道我只需要运行Django迁移.

docker@postgres ERROR:  relation "accounts_myprofile" does not exist
Run Code Online (Sandbox Code Playgroud)

为了尝试运行迁移,我尝试了:

docker-compose run web python manage.py makemigrations 
docker-compose run web python manage.py migrate
Run Code Online (Sandbox Code Playgroud)

返回以下内容:

Migrations for 'accounts':
  accounts/migrations/0001_initial.py:
    - Create model Entry
    - Create model MyProfile

Running migrations:
  No migrations to apply.
Run Code Online (Sandbox Code Playgroud)

我只能从Django容器中成功迁移,例如:

docker exec -i -t 6dc97c6a305c /bin/bash
python manage.py makemigrations
python manage.py migrate
Run Code Online (Sandbox Code Playgroud)

虽然我已经解决了这个问题,但我仍然不明白为什么通过docker-compose运行迁移实际上并没有迁移任何东西.我希望有人能指出我正确的方向.

另外,我不知道这是否是一个相关问题,但是当我运行这些docker-compose运行web命令时,它们似乎正在创建不会关闭的新容器,除非我手动停止它们,docker-compose stop不会删除它们.

CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS                          PORTS                    NAMES
a7bb3c7106d1        accounts_web            "python manage.py che"   4 hours ago         Restarting (0) 41 minutes ago   8000/tcp                 accounts_web_run_62 …
Run Code Online (Sandbox Code Playgroud)

migration django docker docker-compose

12
推荐指数
1
解决办法
1万
查看次数

如何将.py文件导入Ansible模块?

我的Ansible目录结构看起来像这样.

Ansible-Repo

 |
 +-- playbooks
 |  |  
 |  +-- run_custom_module1
 |      
 +-- library
 |  |  
 |  +-- custom_module1
 |  +-- custom_module2
 |    
 +-- bin
 |  |  
 |  +-- usefulpythonfunctions.py
Run Code Online (Sandbox Code Playgroud)

我希望能够从我的Ansible模块中的bin导入有用的pythonfunctions.py.我在我的模块顶部有一个import usefulpythonfunctions.py,但是当我运行playbook时收到以下错误.

\r\nImportError: No module named usefulpythonfunctions\r\n", "msg": "MODULE FAILURE", "parsed": false}
Run Code Online (Sandbox Code Playgroud)

python ansible

10
推荐指数
2
解决办法
6444
查看次数

在终端中执行python文件 - socket.error:无法创建套接字

(webgame)Benjamins-MacBook:webgame test$ python bin/app.py
http://0.0.0.0:8080/
Traceback (most recent call last):
File "bin/app.py", line 21, in <module>
app.run()
File "/Users/test/Pythonprojects/webgame/lib/python2.7/site-packages/web/application.py",    line 310, in run
return wsgi.runwsgi(self.wsgifunc(*middleware))
File "/Users/test/Pythonprojects/webgame/lib/python2.7/site-packages/web/wsgi.py", line   54, in runwsgi
return httpserver.runsimple(func, validip(listget(sys.argv, 1, '')))
File "/Users/test/Pythonprojects/webgame/lib/python2.7/site-packages/web/httpserver.py", line 148, in runsimple
server.start()
File "/Users/test/Pythonprojects/webgame/lib/python2.7/site-packages/web/wsgiserver/__init__.py", line 1753, in start
raise socket.error(msg)
socket.error: No socket could be created
Run Code Online (Sandbox Code Playgroud)

神的名字是什么意思......而且,我很确定我最后一次运行python bin/app.py,它有效.

python

6
推荐指数
1
解决办法
1万
查看次数

python中的双下划线__是什么意思?

双下划线在python中表示什么?我记得读过一个教程,说它与隐藏变量有关,但我觉得它还有更多的东西,我不断看到有双重下划线的代码示例,我不明白这意味着什么.

python

6
推荐指数
1
解决办法
8321
查看次数

为什么docker-compose构建不能反映我的django代码更改?

所以我有一个我用Docker-compose部署的Django项目.我的profile_form.html模板中有一个简单的错误,第3行突出显示.

{% include "header.html" %}
{% load i18n %}
{% load url from future %}

'future' is not a registered tag library
Run Code Online (Sandbox Code Playgroud)

所以我简单地删除了加载URL行,保存profile_form.html,然后尝试构建一个反映代码更改的新容器.

docker-compose build
docker-compose start
Run Code Online (Sandbox Code Playgroud)

这没有解决问题,我得到了同样的错误.我跑进了容器

docker-compose exec -i -t <containerid> /bin/bash
Run Code Online (Sandbox Code Playgroud)

并检查了profile_form.html,确定第3行仍然存在.

除非我遗漏了一些完全明显的东西,否则这告诉我,我对docker-compose构建的理解是不正确的.我认为docker-compose构建将能够确定"是''''目录中存在代码更改",然后重建容器.

django docker docker-compose

6
推荐指数
1
解决办法
4361
查看次数

如何在 drf 使用 ListAPIView 返回空查询集时返回 404

class listapiview(ListAPIView):

    queryset = testobj.objects.all()
    serializer_class = testobjSerializer
    def get_queryset(self):
        queryset = testobj.objects.all()
        build_id = self.request.query_params.get('id', None)
        if id is not None:
            queryset = queryset.filter(id=id)
        return queryset
Run Code Online (Sandbox Code Playgroud)

我只是将一些视图从 APIView 重写为 ListAPIView 并且它破坏了我的一些单元测试,因为空查询集仍然返回 200。我想找出返回 404 的最佳方法(或任何适当的错误代码)用我的例子。

我尝试添加:

if queryset:
    return queryset
else:
    return Response(status=status.HTTP_404_NOT_FOUND)
Run Code Online (Sandbox Code Playgroud)

但收到分页器错误:

TypeError: object of type 'Response' has no len()
Run Code Online (Sandbox Code Playgroud)

django django-rest-framework

6
推荐指数
2
解决办法
1913
查看次数

bin/activate脚本的"来源"是什么意思?

这是参考我收到的回复,说我需要获取此脚本以激活virtualenv.

不知道这意味着什么,初学者在这里试图找出virtualenv.

bash shell

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

如何使用 Selenium webdriver 单击悬停菜单中的链接?

我正在尝试单击悬停菜单中的选项。

http://www.nike.com/us/en_us/c/men

如果您单击顶部导航栏(而不是侧面)中的 Men,然后单击上衣和 T 恤,这就是我正在尝试使用 Selenium webdriver 做的事情。

我目前正在这样做:

# select shirt category
driver.find_element_by_css_selector("span.nsg-font-family--platform.gnav-bar--facet-label").click()
driver.find_element_by_partial_link_text("shirt").click()
Run Code Online (Sandbox Code Playgroud)

但这似乎是从左侧导航栏中选择一个选项而不是顶部。

如何使用硒单击顶部导航栏中的“上衣和 T 恤”?

完整示例:

driver = self.driver
driver.get(self.base_url)
driver.maximize_window()
wait = WebDriverWait(driver, 10)

# choose country/region
driver.find_element_by_xpath("(//button[@type='button'])[2]").click()
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "li.US a"))).click()

#verify swoosh logo is displayed
logo = driver.find_element(By.CSS_SELECTOR, 'span.nsg-glyph--swoosh.gnav-bar--home-logo')
logo.is_displayed()

# open men's hover menu in top nav bar
men_menu = driver.find_element_by_css_selector("li[data-nav-tracking=men]")

# click shirt
men_menu.find_element_by_partial_link_text("Shirt").click()

# select a shirt for sale
driver.find_element_by_xpath("//div[@id='exp-gridwall-wrapper']/div[2]/div[2]/div[2]/div/div/div/div/div/div[3]/div[2]/p").click()

# opening size dropdown
size_button = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".exp-pdp-size-and-quantity-container a.exp-pdp-size-dropdown")))
actions …
Run Code Online (Sandbox Code Playgroud)

python selenium-webdriver

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

如何使用Selenium和phantomjs webdriver正确传递基本身份验证(每次点击)

我正在使用Selenium Webdriver运行一些单元测试.

我有一个使用webdriver.Firefox()成功运行的完整测试,这里是设置:

def setUp(self):
    self.driver = webdriver.Firefox()
    self.driver.implicitly_wait(30)
    self.base_url = "http://www.nike.com"
    self.verificationErrors = []
    self.accept_next_alert = True
Run Code Online (Sandbox Code Playgroud)

测试成功运行,但是我必须多次手动输入基本身份验证才能继续前进.

为了绕过基本身份验证并使整个测试真正自动化,我已经从Firefox切换到phantomjs,因为它听起来你可以通过每次点击传递Basic Auth()

这是切换到phantomjs后的设置:

def setUp(self):
    dcap = dict(DesiredCapabilities.PHANTOMJS)
    dcap["phantoms.page.settings.userName"] = ("testuser")
    dcap["phantoms.page.settings.userPassword"] = ("testpass")
    self.driver = webdriver.PhantomJS(desired_capabilities=dcap, service_args=['--ignore-ssl-errors=true'])
    self.driver.implicitly_wait(30)
    self.base_url = "http://www.nike.com
    self.verificationErrors = []
    self.accept_next_alert = True
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

NoSuchElementException: Message: {"errorMessage":"Unable to find
element with xpath '(//button[@type='button'])[2]'","request":
{"headers":{"Accept":"application/json","Accept-Encoding":"identity",
"Connection":"close","Content-Length":"113","Content- Type":"application/json;charset=UTF-8",
"Host":"127.0.0.1:58025","UserAgent":"Pythonurllib/2.7"},"httpVersion":"1.1",
"method":"POST","post":"{\"using\": \"xpath\", \"sessionId\": \"c2fa02e0-1df0-11e6-a2ad-c325e56df16d\",
\"value\": \"(//button[@type='button'][2]\"}","url":"/element","urlParsed":
{"anchor":"","query":"","file":"element","directory":"/","path":"/element","relative":"/element","port":"","host":"",
"password":"","user":"","userInfo":"","authority":"","protocol":"","source":"/element","queryKey":{},"chunks":    
["element"]},"urlOriginal":"/session/c2fa02e0-1df0-11e6-a2ad-c325e56df16d/element"}}
Run Code Online (Sandbox Code Playgroud)

我不确定这个错误是否只是phantomjs和firefox之间的区别,或者我是否只是错误地传递了auth.

python phantomjs selenium-webdriver

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