簡體   English   中英

如何將視圖從一個django views.py導入到另一個

[英]How to import views from one django views.py to another

我正在學習Django。 我的應用程序中有2個功能,一個用於cats ,另一個用於dogs (例如)。 我具有以下文件夾結構:

/myproject/templates <-- dogs.html, cats.html
/myproject/dogs/ <-- views.py, models.py etc
/myproject/cats/ <-- views.py, models.py etc

現在無論是catsdogs有共同的看法,等等,但目前我只是在各個重復這些views.py文件。 有沒有一種方法可以將視圖和定義從一個視圖快速“導入”到另一個視圖?

這將節省我剪切和粘貼的大量工作。

這有什么危險? 例如,可能會發生沖突嗎? 等等

當然,您可以使用繼承,並且在這種情況下應該使用CBV

import Animal

class Dog(Animal):
    ....
    pass

class Cat(Animal):
    ....
    pass

您還必須更改urls.py

from django.conf.urls import url
from dogs.views import Dog
from cats.views import Cat

urlpatterns = [
    url(r'^dog/', Dog.as_view()),
    url(r'^dog/', Cat.as_view()),
]

最簡單的方法是讓貓和狗的URL指向相同的視圖:

urlpatterns = patterns(
    'catsanddogs.views',
    url(r'^(?P<kind>dog|cat)/(?P<id>\d+)$', 'details'),
)

然后在catsanddogs.views

def details(request, kind, id):
    if kind == "dog":
        ... whatever is specific to dogs ...
    elif kind == "cat":
        ... whatever is specific to cats ...
    else:
        raise ValueError("...")

    ... whatever applies to both ...
    return HttpResponse(...)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM