是否有一个首选的命名约定来创建一个由多个单词组成的Django应用程序?例如,以下哪项是首选?
my_django_app
my-django-app
mydjangoapp
推荐解决方案虽然所有这些都可能 是语法上允许的选项1和3,但是有偏好吗?看看Django通过将应用程序名称和模型名称与下划线组合来创建表名的方式,我倾向于选项#1.
思考?
我有一个Django项目,让我们说"project1".应用程序的典型文件夹结构是:
/project1/
/app1/
/app2/
...
__init__.py
manage.py
settings.py
urls.py
Run Code Online (Sandbox Code Playgroud)
如果我想将所有应用程序保存在某个单独的文件夹中,例如'apps',我该怎么办?所以该结构应如下所示:
/project/
apps/
app1/
app2/
...
__init__.py
manage.py
settings.py
urls.py
Run Code Online (Sandbox Code Playgroud) 我想为我的Django网站实现Facebook连接登录,我已经检查了现有的应用程序.
到目前为止,为此我找到了Django-Socialauth,django-socialregistration和django-facebookconnect.
问题是选择哪一个,我想听听其他任何有这些应用程序经验的开发人员的意见.
对我来说,Facebook Connect登录应用程序与@login_required,默认的auth系统以及django-registration一起使用非常重要.
请分享你的经验:)
我真的在努力应对这整个应用程序的想法.我阅读了很多教程和样式指南,我知道我应该尝试创建专门的应用程序,这只做一件事.在查看一些简单的教程项目时,这一切都很有意义,但一旦进入复杂的现实生活项目,我发现自己无法确定应该如何划分不同应用程序之间的界限.
其中一个问题是,我希望有一个站点(或多个站点),用户可以看到很多不同的东西.遵循应用程序设计规则时应该来自不同应用程序的东西.我怎么会意识到这样的事情?我的第一个想法是创建一个名为ui
的应用程序,它只处理实际导致模板的所有视图,所有其他应用程序提供模型和辅助功能.但我担心该ui
应用程序会变得很大.
举个小例子:让我想拥有一个用户可以执行以下任务的站点:
现在,我会创建三个应用程序:
但是,我需要某种main
或ui
应用程序来处理这些应用程序的交互方式以及创建实际网站,其中所有应用程序都以某种方式参与其中.
那么,有没有"正确"的方法来做到这一点?或者我可以使用任何模式吗?我也很欣赏有关这个主题的良好资源的链接,尽管我已经阅读了不少内容.
我将简要介绍一下:为了使用Django应用程序的精神和想法,应用程序可以从另一个应用程序中导入模型吗?比如,用户统计应用程序将从User应用程序导入模型,例如:from users.models import users
我刚刚完成了第二次使用Django教程,现在我已经更加清楚地理解了这些内容.但是,我仍然不清楚网站内的应用程序如何互相交互.
例如,假设我正在编写一个博客应用程序(显然是一个相当受欢迎的活动).博客文章和评论倾向于一起,但它们足够明显,应该将它们构建到单独的应用程序中,这是Djano开发的一般理念.
请考虑以下示例.实际上我实际上并不会自己编写评论应用程序,因为网上已经存在好的代码,但这是为了演示/练习目的:
mysite的/博客/ models.py
from django.db import models
class post(models.Model):
title = models.CharField(max_length=200)
author = models.CharField(max_length=200)
content = models.TextField()
Run Code Online (Sandbox Code Playgroud)
mysite的/评论/ models.py
from django.db import models
from mysite.blog.models import post
class comment(models.Model):
id = models.AutoField()
post = models.ForeignKey(post)
author = models.CharField(max_length=200)
text = models.TextField()
Run Code Online (Sandbox Code Playgroud)
我上面写的是,从另一个应用程序导入模型并将其设置为外键,Django应用程序如何交互?或者是否有一个不同/更好的方法来构成一个网站进行交互?
更新
根据一个响应中的建议,我正在阅读contrib.contenttypes的文档.如果我正确读到这个,我可以像这样重写我的示例评论应用:
from django.db import models
from django.contrib.contenttypes.models import ContentType
from django.contrib.contentypes import generic
class comment(models.Model):
id = models.AutoField()
author = models.CharField(max_length=200)
text = models.TextField()
content_type = models.ForeignKey(ContentType)
content_object = generic.GenericForeignKey(content_type, id)
Run Code Online (Sandbox Code Playgroud)
这是正确的吗?
我想捆绑css和javascript文件.我还想向客户端发送远期过期标头,因此我需要文件版本控制.
通过互联网进行的快速搜索表明,为Django开发了几种资产管理器.以下是我可以达到的列表:
他们似乎或多或少地执行相同的工作.django-compress,django-compressor和django-site-assets乍一看似乎特别有前途.如果有人提供任何有助于我们在他们之间做出选择的反馈,我将不胜感激.
我正在开发一个Django应用程序,这是一个需要多个子应用程序来保持整洁的大型系统.因此,我有一个顶级目录,它是一个Django应用程序(因为它有一个空models.py
文件),以及多个子目录,它们本身也是应用程序.
我以这种方式放置我的应用程序的原因是因为子应用程序是分开的,但它们永远不会在父应用程序之外自己使用.因此,单独分发它们是没有意义的.
安装我的应用程序时,设置文件必须包含以下内容:
INSTALLED_APPS = (
...
'myapp',
'myapp.subapp1',
'myapp.subapp2',
...
)
Run Code Online (Sandbox Code Playgroud)
......这显然不是最理想的.这也有要求,所有的子应用程序是由他们的"内部"名称简称(即稍微讨厌的结果subapp1
,subapp2
等等).例如,如果我想重置subapp1的数据库表,我必须键入:
python manage.py reset subapp1
Run Code Online (Sandbox Code Playgroud)
这很烦人,特别是因为我有一个名为的子应用程序core
- 当我的应用程序安装在用户的项目中时,它很可能与另一个应用程序的名称冲突.
我是完全错误地做了这个,还是在那里迫使这些"内部"应用程序以他们的全名引用?
所以在我的Django项目中,我有一些不同的应用程序,每个应用程序都有自己的模型,视图,模板等.这些应用程序通信的好方法("Django"方式)是什么?
一个具体的例子是会议应用程序,它有一个会议模型,我有一个家庭应用程序,我想在主页上显示前5个会议.
Home App的View应该只查询Meetings App的模型吗?
感觉就像穿越某条线一样,在Django中可能会有一种更加去耦合的方式来做这样的事情.