Django中的前端原型/骨架

Eey*_*ore 3 django templates django-templates skeleton-code

我经常prototype/skeleton为我工作的后端开发人员创建一个静态html .这有助于在实现站点之前在UI/IA中发现错误并进行代价高昂的重写.

我想更进一步,创造这些prototypes/skeletons in Django.通过原型/骨架我的意思是链接的静态页面,可以很容易地连接到后端.

我想了解suggestions/ideas一下我应该如何设置模板/链接,以便以后在实施阶段轻松使用.

我想到的一系列要求:

  1. 组织模板,而整个项目将包含多个应用程序
  2. 清理URL调度程序和链接创建
  3. 能够显示登录/注销状态

Fil*_*vić 10

我想在更传统的方法中,UI设计人员和后端开发人员在开发频谱的两端工作,并希望以优雅的方式汇聚在中间的某个地方.如果您愿意为编写几行代码而沾沾自喜,那么您可以为开发人员布置整个应用程序体系结构,因为您占上风 - 您立即关注用户,他们使用的数据以及他们需要进行的互动.这将为开发人员带来大量的猜测,现在只需要填补空洞,连接点或者你有什么.

你应该做的第一件事是聚在一起并设定一些共同点.通常,这包括在一开始就执行模块化.获取所有主要功能并将它们分解为几个Django应用程序,这些应用程序将打包模板,查看和模拟与应用程序提供的特定功能相关的三元组.这里越好越好,所以不要担心,如果你最终得到很多应用程序,因为你永远不希望有一个应用程序提供太多的功能/托管太多的组件.通常你开始与应用程序,如registration,authentication,profiles(用户)和你的工作方式向外.举个例子,你可以将这三个应用程序塞进一个应用程序中,但最终你会得到很多模板,很多视图,两个或三个模型,但测试真的会成为一个真正的窒息点.因此,将所有内容分解为这些应用程序桶,直到您感觉系统的每个部分自然地在概念层面上落实到位.如果你发现自己在想哪里的东西应该放置,或者你在寻找一个模块,这是几页长,觉得很想打破模块(models.py,views.py,test.py)与许多封装内模块的程序包,你应该立即重构架构.永远记住,您在这里的努力是为了简化您的架构.

一旦完成,你真的完成了一半的工作.关于Django的好处是你在URL和视图之间有松耦合.视图本身提供应用程序行为并简化演示.如果您可以正确地铺设主URL并将视图存根以生成静态模板,那么您刚刚做了一些很好的工作.

这就是它的完成方式.你可以抽象的网址,并命名你的模式他们映射到的意见,如authentication:login,authentication:logout,registration:register,registration:confirm,registration:activate,等,这是你如何配合你的内部来提供的,并且这些不应该是有所变动的所有行为.然后,您可以随时更改URL模式authentication:login,更改模式映射到的视图,但是您可以通过内部名称引用它,这样您就可以换出仅使用完整视图生成静态模板的视图,而无需对您的代码进行任何其他修改.

所以这是它在现实生活中的运作方式:

  1. 头脑风暴,决定他们将提供的应用程序和功能,并审查您的决定.
  2. 开始使用core将承载某些项目特定功能的应用程序,例如基本模板和根/视图.
  3. 创建一个/core/templates/core/base.html将加载将在站点范围内使用的所有常见CSS/JS文件,它们将定义标题,内容和页脚部分(模板块),并且将使用上下文变量用于页面元数据,例如作为标题,描述,关键字和机器人.典型的"一个模板来统治它们",这些位将出现在所有页面的结构/表示中.
  4. 创建一个简单的/core/temaplates/core/welcome.html,扩展核心模板并打印"Hello world!" 在内容区域.
  5. 将以下内容添加到/core/urls.py:

    from django.conf.urls.defaults import *
    from django.views.generic import TemplateView  
    
    
    urlpatterns = patterns('',
    
        # Welcome
        url(
            r'^$', TemplateView.as_view(template_name='core/welcome.html'),
            name='welcome'
        ),
    
    )
    
    Run Code Online (Sandbox Code Playgroud)
  6. 把它挂在主要的/urls.py:

    from django.conf.urls.defaults import *
    from django.contrib import admin
    
    
    admin.autodiscover()
    
    urlpatterns = patterns('',
        url(ur'^', include('core.urls', namespace='core')),
        url(ur'^admin/doc/', include('django.contrib.admindocs.urls')),
        url(ur'^admin/', include(admin.site.urls)),
    )
    
    Run Code Online (Sandbox Code Playgroud)
  7. 点击http://localhost:8080/,看到"Hello World!",陶醉在温暖的模糊感中.

  8. 对其余应用程序重复相同的操作:创建应用程序,创建模式,命名它们,将它们映射到静态模板,将其挂钩到主要的命名空间urlconf.

您可以进一步将视图推送到开发人员的生产准备状态.它可能取决于开发者和他们的风格指南,但我喜欢保持/urls.py清除除模式,名称和视图映射之外的所有其他内容.你/core/urls.py可能看起来像:

from django.conf.urls.defaults import *
from core import views


urlpatterns = patterns('',

    # Welcome
    url(
        r'^$', views.Welcome.as_view(),
        name='welcome'
    ),

)
Run Code Online (Sandbox Code Playgroud)

/core/views.py使用以下内容编辑:

from django.core.views.generic import TemplateView

class WelcomeView(TemplateView):

    template_name='core/welcome.html'

    extra_context={
        'page_title': 'Welcome!',
        'page_keywords': 'relevant,page,keywords',
        'page_description': 'Something equally relevant',
    }

    def get_context_data(self, **kwargs):
        context = super(WelcomeView, self).get_context_data(**kwargs)

        context.update(self.extra_context)
        return context
Run Code Online (Sandbox Code Playgroud)

这是一个坚固的存根视图,包含页面元数据!绝对是那些能从开发者那里获得啤酒的东西.继续为所有视图执行此操作以抽出静态模板.当有人接近完成视图时,他们只需要从不同的视图类继承,添加缺少的功能,扩展上下文,修改模板和瞧 - 它已准备好进行生产.

为了实现这一目标,你不需要做很多前期学习,但它真的需要开发人员进行大量的猜测,而这些开发人员自然更关心构建应用程序的其余部分.它也很简单,非常擅长,我想没有人会介意让你做所有这些工作.作为添加的牛肉,你可能不会在视图中如何填充模板上下文,所以即使你可以开始推出更复杂的视图,或者至少能够阅读它们.

  • 很好的答案! (2认同)

lov*_*ing 6

当我启动一个应用程序时,我通常也会在Django中创建一个原型版本.我只使用direct_to_template通用视图,稍后可以用开发人员创建的视图替换它们.由于您有多个应用程序,因此您可以将应用程序特定模板存储在模板文件夹中与应用程序同名的文件夹中.

最终结果是您将所有屏幕显示在正确的URL上,并且可以在它们之间进行链接.所有开发人员需要做的是用他们创建的自定义视图替换每个URL.让事情变得简单.

如果您希望显示登录/注销状态,则可能需要执行一些代码,但这肯定是可行的.