我正在使用Django 1.7而不是Python 2.7,并注意到我的生产主机(Webfaction)与开发机器(mac os x)之间的奇怪行为.
在我的开发机器上,当我通过cmds获取当前工作目录时
import os
dirspot = os.getcwd()
print dirspot
Run Code Online (Sandbox Code Playgroud)
我得到manage.py可执行文件的位置.当我在主机(webfaction)机器上执行此操作时,我会得到差异响应,具体取决于Django站点是否正在运行,而不是使用Django shell.
所以我的项目(和manage.py)位于:
/home/ross/webapps/djangoarea/myproj
Run Code Online (Sandbox Code Playgroud)
运行
python manage.py shell
Run Code Online (Sandbox Code Playgroud)
然后我得到上面的os.getcwd()
/home/ross/webapps/djangoarea/myproj
Run Code Online (Sandbox Code Playgroud)
但是,如果我将相同的命令放入views.py并运行我的项目,我会得到
/home/ross/
Run Code Online (Sandbox Code Playgroud)
我猜它可能与运行django的apache2和wsgi有关,而不是与manage.py调用它有关.有谁知道如何使这一点保持一致?
谢谢你,罗斯.
我正在尝试将我的webapp部署到Webfaction,基本示例正常工作,我在模板中有一个TemplateNotFound,它使用Jinja2扩展了一个基本模板.这是我的项目树:
/webapps
/myapp
development.ini
production.ini
/bin
/theapp
/Project
setup.py
/project
__init__.py
views.py
/templates
base.jinja2
home.jinja2
/static
Run Code Online (Sandbox Code Playgroud)
_ init _.py
config.include('pyramid_jinja2')
config.add_jinja2_search_path("templates")
Run Code Online (Sandbox Code Playgroud)
home.jinja2
{% extends "templates/base.jinja2" %}
Run Code Online (Sandbox Code Playgroud)
为了更清楚,该项目在本地工作我知道它是模板路径的东西,我不知道如何设置它,我尝试了许多不同的方式,无论如何这是追溯:
File "..webapps/myapp/myapp/Project/project/templates/home.jinja2", line 1, in top-level template code
{% extends "templates/base.jinja2" %}
File "..webapps/myapp/lib/python2.7/site-packages/pyramid_jinja2-1.8-py2.7.egg/pyramid_jinja2/__init__.py", line 193, in get_source
raise TemplateNotFound(name=ex.name, message=message)
TemplateNotFound: templates/base.jinja2; asset=..webapps/myapp/lib/python2.7/site-packages/Project-0.0-py2.7.egg/project/templates/base.jinja2; searchpath=['..webapps/myapp/lib/python2.7/site-packages/Project-0.0-py2.7.egg/project/templates']
Run Code Online (Sandbox Code Playgroud)
如果这是我的错误,请帮我设置模板的正确路径.
我使用的代码是什么我上找到webfaction
EMAIL_HOST = 'smtp.webfaction.com'
EMAIL_HOST_USER = '<mailbox name>'
EMAIL_HOST_PASSWORD = '<mailbox pass>'
DEFAULT_FROM_EMAIL = '<email address>'
SERVER_EMAIL = '<email address>'
Run Code Online (Sandbox Code Playgroud)
我不断收到错误 SMTPRecipientsRefused
发件人地址被拒绝:需要完全合格的地址
我阅读了webfaction上的文档 并安装了mongodb的步骤
它说:
To start the database, run $HOME/webapps/application/mongodb-linux-architecture-version/bin/mongod --auth --dbpath $HOME/webapps/application/data/ --port number.
To stop MongoDB while it is running in the foreground, press Ctrl + C.
Run Code Online (Sandbox Code Playgroud)
但我需要保持数据库始终运行
我该怎么办?
拜托我.谢谢
我正在对基于Django的Webfaction托管的服务器进行最后的润色。它具有REST API,可将内容传递到移动设备,每隔几分钟就会接受来自其他来源的POST请求。到目前为止,POST部分运行良好-到目前为止,它已经接受一周的数据了,没有重大问题。
但是,我担心发布移动应用程序时会发生什么-我希望有大量的用户,并且如果我的API无法处理所有GET请求的负载,我也不想遇到死机。
如何对Django API进行负载测试?在线上是否有工具可以一次模拟数百个GET请求,还是应该从头开始进行测试?
我已经在 .bash_profile 文件中设置了数据库密码的环境变量,但 PostgreSQL 的 PASSWORD 字段没有读取相同的内容。另外,我可以成功打印 production.py 文件中的密码,但 PostgreSQL 不会使用相同的密码。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': '********_db',
'USER': '*****_name',
'PASSWORD':os.environ.get("RS_DB_PWD"),
}
#The below will show the password correctly.
print(os.environ.get("RS_DB_PWD"))
Run Code Online (Sandbox Code Playgroud) 我有一个模型:
class Person(models.Model):
name = models.CharField(...)
def __unicode__(self):
return u'%s' % self.name
class Entity(models.Model):
client = models.ForeignKey(Person)
Run Code Online (Sandbox Code Playgroud)
在我看来,我只想获取所有实体并按客户名称对它们进行排序:
def all_entities(request):
entities = Entity.objects.all().order_by('client')
return render(request, 'template.html', {'entities': entities})
Run Code Online (Sandbox Code Playgroud)
所以我的模板只打印所有实体。
<html>
{% for entity on entities %}
{{ entity.client }}}
{% endfor %}
</html>
Run Code Online (Sandbox Code Playgroud)
发生的是,在我的开发 PC 中,一切都运行得很好,我得到了一个有序的客户端名称列表,但我无法理解的是,在 webfaction.com 上的生产服务器上,结果并不是像我的本地环境中那样按字母顺序排序。
我也在 shell 上测试了它,结果是相同的,不知何故 order_by('client') 在我的电脑上返回按字母顺序排序的列表,但在生产中不按字母顺序排序。
注意:两个环境都有 Postgres 并使用相同的后端。
谢谢
在我的生产服务器上,我不小心删除了我的应用程序之一中的迁移目录。多个人在开发该应用程序,因此在制作应用程序时,我们所做的就是在本地不进行任何迁移的情况下推送模型更改,然后在生产服务器上进行迁移,然后迁移到那里。我们这样做是因为我们过去遇到过迁移合并问题,并且认为这可能是一个很好的解决方案。由于没有迁移文件夹的本地副本,我担心它会永远消失。我的问题是这样的。我可以在Webfaction中访问phpPgAdmin,并且数据库有一个django_migrations表。我认为一种解决方案是找到最新的迁移,例如 0009_migration.py,而不是简单地重命名新的迁移文件 0010_migration.py 以便将来在该应用程序中进行任何模型更改时用于我的下一次迁移。这样我就可以简单地运行 migrate,并且只会考虑尚未运行的迁移 0010_migration.py。但出于好奇,是否有一些命令可以查看您的 PostgreSQL 数据库,并根据 django_migrations 表中文件中的迁移记录在您的应用程序迁移目录中创建迁移文件?
我想问这个问题的一个更简单的方法是“有没有办法将 django_migrations 表行逆向工程到migrations.py 文件中? ”这是我在 PostgreSQL 中的 django_migration 表行的图像,以及我希望该文件的外观就像,只是用不同的命令。
Django 迁移
class Migration(migrations.Migration):
dependencies = [
('portfolio', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='project',
name='contact_form',
field=models.BooleanField(default=False),
),
]
Run Code Online (Sandbox Code Playgroud)
我有一个由 webfaction 托管的服务器,我希望能够通过 FTP 或 SFTP 从我的应用程序发送 csv 文件。我发现许多应该有帮助的库,例如ConnectionKit、NMSSH、DLSFPT和LxFTPRequest。然而,它们都在 Objective-C 中而不是 Swift 中,这使得它们很难在 Swift 4 中阅读、理解和实现。自从我找到了上传的 Swift 实现以来,我尝试实现 LXFTPRequest,这是我的代码:
let fileName = "user-data.csv"
guard let path = FileManager.default.urls(for: .documentDirectory, in:.userDomainMask).first else {fatalError(ErrorMessageStrings.couldntAccessDocs.rawValue)}
let fileURL = path.appendingPathComponent(fileName)
let folderLocation = "/home/path/"
let uploadUrl = URL(string: "ftp://server-name.webfaction.com" + folderLocation)
let request = LxFTPRequest.upload()
request?.serverURL = uploadUrl
request?.localFileURL = fileURL
request?.username = "username"
request?.password = "password"
request?.successAction = { (resultClass, result) in
print("File uploaded")
} …
Run Code Online (Sandbox Code Playgroud) 尝试在系统中安装具有不同版本的django,它向我显示:
Installing collected packages: Django
Found existing installation: Django 1.7.11
Not uninstalling django at /home/user/lib/python2.7, outside environment /home/user/webapps/v2_dev/venv
Run Code Online (Sandbox Code Playgroud)
成功安装Django-1.8.19
但实际上有旧版本
尝试了不同的命令:
./venv/bin/pip install Django==1.8.11
pip install Django==1.8.11
Run Code Online (Sandbox Code Playgroud)
更新:安装软件包时,它显示:
The required version of setuptools (>=16.0) is not available,
and can't be installed while this script is running. Please
install a more recent version first, using
'easy_install -U setuptools'.
(Currently using setuptools 3.1 (/home/user/lib/python2.7/setuptools-3.1-py2.7.egg))
Run Code Online (Sandbox Code Playgroud)
升级时:
venv/bin/pip install --upgrade setuptools
Requirement already up-to-date: setuptools in ./venv/lib/python2.7/site-packages (40.5.0)
Run Code Online (Sandbox Code Playgroud) webfaction ×10
django ×7
python ×5
postgresql ×2
file-upload ×1
migration ×1
mongodb ×1
pip ×1
pyramid ×1
sftp ×1
sql-order-by ×1
swift ×1