我希望能够从Django的不同视图调用函数。例如,假设我需要从各种视图中生成一个随机数,我不想在每个视图中都重复相同的“随机数”代码-我只想“调用一个函数”。>
为了使这个问题简短,我将大大简化以下代码:
views.py
def viewOne(request):
#code for this view, including needing to generate a random number
import random
myrandomnumber = random.randint(1,21)*5
def viewTwo(request):
#code for this view, including needing to generate a random number
import random
myrandomnumber = random.randint(1,21)*5
如您所见,我在两个视图中都使用相同的代码来生成一个随机数。如果要更新生成随机数的方式,则必须在两个视图中都进行更新。
这是我想做的事情:
views.py
def createRandomNumber():
import random
myrandomnumber = random.randint(1,21)*5
def viewOne(request):
#code for this view, including needing to generate a random number
createRandomNumber()
def viewTwo(request):
#code for this view, including needing to generate a random number
createRandomNumber()
非常感谢您能给我的帮助
答案 0 :(得分:1)
为此,您需要提取函数,以便所有需要该函数的视图都可以使用该函数。例如,您可以在django应用中创建一个名为utils.py
的文件,在其中定义函数并将其导入views.py
utils.py
import random
def createRandomNumber():
return random.randint(1,21)*5
views.py
from utils import createRandomNumber
def viewOne(request):
createRandomNumber()
def viewTwo(request):
createRandomNumber()
答案 1 :(得分:0)
只需将要重用的代码包装在函数中,然后在需要时调用该函数。
此外,请勿在函数内部使用import语句!
CREATE TABLE DDR_Rental
(customer_ID NUMBER(5),
rental_date DATE,
rent_fee NUMBER(3,2) CONSTRAINT SYS_RENTAL_FEE_NN NOT NULL,
film_title VARCHAR2(20),
start_date DATE,
expiry_date DATE,
rating NUMBER(5),
CONSTRAINT SYS_RENTAL_PK PRIMARY KEY ((customer_ID), (rental_date), (film_title)),
CONSTRAINT SYS_RENTAL_CUS_ID_FK1 FOREIGN KEY (customer_ID) REFERENCES
DDR_CUSTOMER(CUSTOMER_ID),
CONSTRAINT SYS_RENTAL_FILM_TITLE_FK2 FOREIGN KEY (film_title) REFERENCES
DDR_MOVIE_TITLE(FILM_TITLE),
CONSTRAINT SYS_RENTAL_EXP_DATE_CK CHECK (expiry_date >= start_date),
CONSTRAINT SYS_RENTAL_START_DATE_CK CHECK (start_date >= rental_date),
CONSTRAINT SYS_RENTAL_RATING_CK CHECK (REGEXP_LIKE(rating,('[12345]'))));
如果需要在不同文件中使用该代码段,请使用import语句。因此,假设您正在使用与views.py位于同一目录中的文件,只需添加
#views.py
import random
def createRandomNumber():
myRandomNumber = random.randint(1,21)*5
return myRandomNumber
def viewOne(request):
#code for this view, including needing to generate a random number
randomNumber = createRandomNumber()
def viewTwo(request):
#code for this view, including needing to generate a random number
randomNumber = createRandomNumber()
答案 2 :(得分:0)
根据您对随机数的处理方式,此逻辑在模型或管理器中可能会更好(例如,选择随机实例)。那可能意味着您只需要一个地方,或者您可能仍想将其分离为单独的util函数。