簡體   English   中英

Django:如何在其他python腳本中使用表單值?

[英]Django: how do I use the form values in other python scripts?

這是我的views.py

from django.shortcuts import render
from .reisplanner import *

def home(request):
    return render(request, 'home.html', {})

def reisplanner(request):
    if request.method == 'POST':
        form = reisplannerForm(request.POST)

    if form.is_valid():
        beginstation = form.cleaned_data['beginstation']
        eindstation = form.cleaned_data['eindstation']

        print(beginstation, eindstation)
    else:
        form = reisplannerForm()

    return render(request, 'reisplanner.html', {'form': form})

這是forms.py

from django import forms

class reisplannerForm(forms.Form):
    beginstation = forms.CharField(required=True)
    eindstation = forms.CharField(required=True)

我想使用reisplanner.py的變量

def reisplanner():
    #
    # use the values of the form here
    #

我實際上已經嘗試了一切,這是針對一個學校項目的,並且已經嘗試修復了大約2天,但沒有結果。

如果你們能幫助我,那太好了。 如何獲取表單值到python腳本?

reisplanner.py

def my_reisplanner(form):
    beginstation = form.cleaned_data['beginstation']
    eindstation = form.cleaned_data['eindstation']
    # Do somthing with the values

views.py

from django.shortcuts import render
from .reisplanner import *

def home(request):
    return render(request, 'home.html', {})

def reisplanner(request):
    if request.method == 'POST':
        form = reisplannerForm(request.POST)

    if form.is_valid():
        beginstation = form.cleaned_data['beginstation']
        eindstation = form.cleaned_data['eindstation']

        print(beginstation, eindstation)

        # You can call this function because you imported it in line 2
        my_reisplanner(form)
    else:
        form = reisplannerForm()

    return render(request, 'reisplanner.html', {'form': form})

唯一的問題是要調用的函數的名稱。 如果對視圖函數和過程函數使用相同的名稱,則導入時會出現問題。

在上一個代碼片段中,我將流程函數重命名為my_reisplanner以避免任何沖突。 如果您不想(或無法)重命名流程功能(請參閱下文),則還有其他解決方案。

一般來說,不鼓勵這種進口

from .reisplanner import *

因為您無法控制導入的內容。 喜歡這個:

from .reisplanner import reisplanner as reisplanner_name_alias
# [...]
# Call reisplanner using local alias created from imports
reisplanner_name_alias()

或簡單地

from . import reisplanner
# [...]
# Call reisplanner using full modul dotted path
reisplanner.reisplanner()

暫無
暫無

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

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