我对相当一维的Django实现很满意,但现在试图了解多站点共享内容的过程.
我已经阅读了Django Sites Framework以及关于该主题的许多帖子,但是我没有获得如何启动使用相同数据库的第二个站点的基础知识,而是将其自身表示为单独的域名.
我有一个非常开心的django网站,它包含一个在项目中运行的应用程序.
为了使用教程的说法,我开始了一个项目"mysite"
django-admin.py startproject mysite
Run Code Online (Sandbox Code Playgroud)
然后启动了一个应用程序"民意调查"
manage.py startapp polls
Run Code Online (Sandbox Code Playgroud)
问题1:网站框架是否假设每个网站都是单独的项目或单独的应用程序?
项目中的第二个应用程序'polls2'似乎有意义,但定义SITE_ID的settings.py似乎是一个整体项目的事情.有没有办法进行app-by-app设置?
与'mysite'相邻的第二个proj'mysite2'会给我一个第二个结构,它有自己的settings.py和一个单独的SITE_ID,但是然后似乎有一个严重违反"DRY"原则,因为我要复制许多元素相邻的姐妹项目.
Q2:听起来我需要将数据库模型(models.py)重新定义为多对多关系,以便在站点之间共享数据.这只会改变Django访问这些表的方式,还是需要重建现有站点的数据库?
您对实施网站框架的预期流程的指导将是非常好的,并且非常感谢.
我正在将Video.js集成到一个项目中并遇到一些问题.
我在我的HTML中有:
<video id="vidView" class="video-js vjs-default-skin" width="320" height="320"
poster="/siteImages/Dummy.png" preload="auto">
<source type="video/mp4" src="" \>
</video>
Run Code Online (Sandbox Code Playgroud)
在我的javascript中,我加载了一个源代码并设法播放它.
var vidPlayer = _V_("vidView");
vidPlayer.src({ type: "video/mp4", src: vidlink });
vidPlayer.play();
Run Code Online (Sandbox Code Playgroud)
只有以编程方式执行此操作才会遇到问题 - 源和播放的每一次加载都会起作用.我想象我在video.js准备好之前尝试播放,所以试图让听众在适当的时间发布游戏.
我发现某些事件根本不会发生.我无法从"loadedalldata"事件或"loadeddata"获得任何内容."loadstart"事件至少会触发,所以我将.play()命令放在那里.
vidPlayer.addEvent("loadstart", function(){ console.log("LOAD START Fired" );
var myPlayer = this;
myPlayer.play();
} );
Run Code Online (Sandbox Code Playgroud)
但它仍然不可靠.我在控制台上看到"试图恢复!"的消息.几次.它适用于一些视频,但有时会陷入困境.
我错过了让"loadeddata"事件发生的事情吗?
另外,相关Q - 我注意到文档说删除事件监听器的语法是:
myPlayer.removeEvent("eventName",myFunc);
是对的吗?看起来"myFunc"部分是多余的,我想知道这是文档中的复制/粘贴错误 还是正确的语法.
Thx提前.
我正在拥抱VirtualEnvWrapper-就像我看到的很多。但是,当我尝试开始时,尝试与虚拟环境建立项目目录关联时没有看到预期的行为。
我已经安装了virtualenv和-wrapper。我可以创建环境,并且“ workon”可以很好地列出它们。我可以停用并愉快地管理它们。因此,所有功能似乎都起作用。我阅读了有关项目mgmt的文档。(也是一个很好的视频教程,并且在10:39解释了所需的proj关联行为)
当我尝试将工作目录与env关联时,它会接受我的cmds,但是当我“工作”该项目时,它不会将我放入指定的工作目录中。
例如,我有一个工作区〜/ Ross_code(并且我在.bashrc中将其设置为$ PROJECT_HOME)。里面有一个现有的项目文件夹〜/ Ross_code / superproj
所以现在我用
mkvirtualenv superp
Run Code Online (Sandbox Code Playgroud)
然后,转到现有项目目录,并将其与env关联:
cd ~/Ross_code/superproj
setvirtualenvproject
Setting project for superp to /Users/ross/Ross_code/superproj
Run Code Online (Sandbox Code Playgroud)
然后我用“ deactivate”退出虚拟环境,并用
workon superp
Run Code Online (Sandbox Code Playgroud)
但是当前的工作目录仍然是我的〜/文件夹。
我检查了.project文件,该文件似乎已通过调用setvirtualenvproject进行了正确设置:
cdvirtualenv
more .project
/Users/ross/Ross_Code/superproj
Run Code Online (Sandbox Code Playgroud)
但是叫“ workon”永远不会让我陷入预期的位置。我以为env和项目目录可能需要同名,但这也没有任何区别。
知道为什么这么有吸引力的项目关联功能对我不起作用吗?
罗斯
稍后-更多信息:我还尝试使用mkproject命令,该命令应在$ PROJECT_HOME区域中为我的代码创建一个目录,并同时创建virtualenv并将它们彼此关联。
呼唤
mkproject junkproj
Run Code Online (Sandbox Code Playgroud)
实际上确实很好地创建了项目目录,并将我粘贴到virtualenv中,将cd粘贴到junkproj目录中。但是,当我取消激活然后再次“ workon junkproj”时,我仍然留在〜/目录中,而不是进入$ PROJECT_HOME中的项目目录
:(
我正在使用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调用它有关.有谁知道如何使这一点保持一致?
谢谢你,罗斯.
我正在将一些 Django 1.5 移植到 1.7,并且 send_mail() 调用对我来说失败了。我检查了文档,他们似乎建议我的语法仍然可以。
我尝试在 Django shell 模式下获取跟踪以在此处共享,但它仍然以相同的方式失败。我只是通过以下方式调用 send_mail() :
from django.core.mail import send_mail
send_mail('Test mail', 'This is a test', 'addr@site.ca' ['addr2@site.ca'], fail_silently=False)
Run Code Online (Sandbox Code Playgroud)
我得到了一个回溯
ImportError: No module named django_smtp_ssl
Run Code Online (Sandbox Code Playgroud)
现在,smtp_ssl 看起来像来自 smtplib。我尝试将 smtplib 与 send_mail 一起导入,但这也无济于事。
在我的 settings.py 中,我有通常的 PORT 和 HOST 详细信息和
EMAIL_BACKEND = 'django_smtp_ssl.SSLEmailBackend'
Run Code Online (Sandbox Code Playgroud)
有什么建议?
-谢谢,罗斯。
我在Mac OSX上做python/django工作.我目前的项目的Python 2.7.
我已经设法避免需要几年的virtualenv,虽然在面对管理并发版本时它总是看起来是一个很好的解决方案.我渴望转向最新的Django版本(1.7),但不想破坏我在1.5以下的另一个项目.(它不公开,所以我不担心1.7之前的安全问题).
virtualenv仍然是启用两个并发环境的好方法,或者是否有一些当今孩子正在使用的更有用的东西.如果有更好的追求/学习方向,只是不想走下virtualenv路径.
python ×5
django ×4
virtualenv ×2
frameworks ×1
javascript ×1
macos ×1
sites ×1
video ×1
video.js ×1
webfaction ×1