在我的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-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) 我的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) (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中表示什么?我记得读过一个教程,说它与隐藏变量有关,但我觉得它还有更多的东西,我不断看到有双重下划线的代码示例,我不明白这意味着什么.
所以我有一个我用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构建将能够确定"是''''目录中存在代码更改",然后重建容器.
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) 这是参考我收到的回复,说我需要获取此脚本以激活virtualenv.
不知道这意味着什么,初学者在这里试图找出virtualenv.
我正在尝试单击悬停菜单中的选项。
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) 我正在使用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.