讓我們從塵雲開始。
你在問什麼主要是關於網頁的工作方式。您需要知道如何使用HTML傳遞參數。有很多方法可以做到這一點。但與Django有一個模式。
您需要一個url和一個視圖來捕獲任何請求。然後你需要在裏面創建一個模板和一個表單。使用這種形式,您可以創建一些將數據發送到視圖的請求。
要創建你需要編輯urls.py您的項目中添加一個網址:
網址。py
from django.conf.urls import url
from my_app.views import my_view
urlpatterns = [
...
url(r'^my_url$', my_view, name='my_view')
...
]
欲瞭解更多關於網站的信息,請查看URL dispatcher頁面。
然後在您的應用程序中創建您的視圖,在我的示例中爲my_app。編輯程序my_app/views.py
程序my_app/views.py
from django.http import HttpResponse
def my_view(request):
return HttpResponse('IT WORKS!')
這樣,你可能與路徑/my_url
訪問工作視圖。如果您運行./manage.py runserver
,則可以從http://localhost:8000/my_url
訪問您的視圖。
要創建表單,您需要創建一個模板。默認情況下,django搜索應用程序目錄中的模板。在您的應用中創建模板目錄,在我們的案例my_app/templates
中創建一個HTML文件。例如my_app/templates/my_form.html
。但我建議在模板目錄內創建一個更多的目錄。 my_app/templates/my_app/my_form.html
。這將防止模板衝突。您可以查看文檔Templates頁面瞭解更多信息。
my_app應用/模板/程序my_app/my_form.html
<html>
<body>
<form action="/my_url" method="POST">
{% csrf_token %}
<input type="text" name="number">
<input type="text" name="message">
<input type="submit" value="Run My Code">
</form>
</body>
</html>
這是創建表單的方式之一。但我不要推薦它。我會變得更漂亮。但是,首先讓「使它工作」,編輯您views.py:
csrf_token是一個Django內置的模板標籤,把CSRF令牌到表單。默認情況下,django在每個帖子 請求中都需要CSRF令牌。
程序my_app/views.py
from django.http import HttpResponse
from django.shortcuts import render
def my_view(request):
if request.method == 'GET':
return render('my_app/my_form.html')
elif request.method == 'POST':
# get post parameters or None as default value
number = request.POST.get('number', None)
message = request.POST.get('message', None)
# check if parameters are None or not
if number is None or message is None:
return HttpResponse('Number and Message should be passed')
# your code goes here
...
return HttpResponse('Your code result')
直到此時這個答案的目的是 「使其工作」。讓我們把它轉換成漂亮和乾淨。首先,我們將創建表格。表單就像模型,它可以幫助你創建表單作爲對象。它也處理表單驗證。表格一般保存在表格目錄中。創建my_app/forms.py
並對其進行編輯:
程序my_app/forms.py
from django import forms
class MyForm(forms.Form):
number = forms.CharField(max_length=15, required=True)
message = forms.CharField(max_length=160, required=True)
把你的表格模板中:
my_app應用/模板/程序my_app/my_form.html
<html>
<body>
<form action="{% url 'my_view' %}" method="POST">
{% csrf_token %}
{{ form }}
</form>
</body>
</html>
除了表單,HTML表單標籤的動作也發生了變化。 url模板標籤用於獲取在urls.py中指定的url表單url名稱。 可以使用{{ request.path }}
來代替url標記。
創建一個表單實例,並把它傳遞到模板渲染:
my_app應用/視圖。py
from django.http import HttpResponse
from django.shortcuts import render
from .forms import MyForm
def my_view(request):
if request.method == 'GET':
form = MyForm()
return render('my_app/my_form.html', {'form': form})
elif request.method == 'POST':
form = MyForm(request.POST)
# check if for is not valid
if not form.is_valid():
# return same template with the form
# form will show errors on it.
return render('my_app/my_form.html', {'form': form})
# your code goes here
...
return HttpResponse('Your code result')
您可以使用基於類的視圖來編寫視圖,但這不是必需的。我希望它有幫助。
的這個問題的答案會很長,但我理解你可能想要從哪裏開始的指針。如果你想用Django構建一個Web應用程序,請按照他們的教程在這裏:https://docs.djangoproject.com/en/1.9/intro/tutorial01/ 但是,我推薦像Flask:http:// flask更簡單。 pocoo.org/docs/0.11/quickstart/#quickstart – slider
我已經有一個Django應用程序:DI只是想知道如何在我的應用程序中創建一個選項,當它被點擊時,代碼得到執行 –
因爲你的代碼是一個Python代碼,你可以直接在你的視圖中編寫你的代碼。其他情況並不美觀。 – scriptmonster