python - 如何处理同一站点的两个版本

标签 python django

我的项目由同一事物的两个版本组成。例如,版本 1 是 Freshman,版本 2 是 Sophomore。为避免冗余,我使用相同的模板和 View ,因为这两个版本的实现差别不大。该网站的唯一区别在于网址。这样

localhost:8000/freshman/computer-science
localhost:8000/sophomore/computer-science

我网站的用户只需点击一个按钮即可切换到网站的任何版本,即 Freshman 或 Sophomore。我对如何实现这样一个方法感到困惑,通过它我不会重复自己并且可以以 pythonic 方式实现功能。

最佳答案

我建议考虑为两者使用一个 url 模式,但将唯一参数传递给每个。您可以使用 django.con.urls.defaults.include 函数实现此目的。在这种情况下,第一个 include 将 kwarg current_app 设置为 freshman,第二个 include 设置为 sophomore

from django.conf.urls.defaults import *

site_patterns = patterns('',
    # put your urls here...
)

urlpatterns = patterns('',
    url(r'^freshman/',
        include(site_patterns, namespace='freshman', app_name='freshman'), {
            'current_app': 'freshman',
        }),
    url(r'^sophomore',
        include(site_patterns, namespace='sophomore', app_name='sophomore'), {
            'current_app': 'sophomore',
        }),
)

然后,像往常一样,您可以在 View 中弹出 kwarg,并根据该值触发独特的行为:

def my_view(request, *args, **kwargs):
    current_app = kwargs.pop('current_app')

或者,您可以创建一个装饰器来自动执行此操作以及需要在遵循此格式的 View 上完成的任何其他样板。

关于python - 如何处理同一站点的两个版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8540052/

相关文章:

Django 管理网址

python - Django 模型 - 继承成本

python - Django:定义插入长文本的表单的最佳方式?

javascript - GAE Python JavaScript : How to insert response data from facebook login into the datastore?

python - 从 pandas 数据框中的字符串中删除特定 url

python - 使用正则表达式将韩文文本解析为列表

python - 使用 Paypal Python SDK 将 PayPal 集成到 Django 应用程序中

python - Numpy 数组减法

python - 如何从 Perl 调用 python 脚本?

django - 是否可以在该用户登录后查看该用户是否为首次登录? - Django