我在服務器中有一個PHP腳本,返回{"available":true}
或{"available":false}
,具體取決於電子郵件地址是否可用。這裏是代碼:如何在我的Django表單中提出錯誤?
<?php
$servername = "localhost";
$username = "root";
$password = "mysqlpass";
$dbname = "testdb";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT username FROM testtable";
$result = $conn->query($sql);
$query = $_GET['query'].'@groupdesignace.com';
$arr = array();
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
$arr[] = $row['username'];
}
if (in_array($query, $arr)) {
$output = array('available' => false);
echo json_encode($output);
} else {
$output = array('available' => true);
echo json_encode($output);
}
} else {
echo "0 results";
}
$conn->close();
?>
在不同的服務器上,用戶通過表單請求他們的電子郵件地址,我使用的是Django。我寫了下面的代碼來檢查電子郵件是否可用,如果沒有,應該引發錯誤。下面是代碼:
class RequestEmailAddressForm(forms.Form):
email = forms.CharField(label='Email', max_length=100)
password = forms.CharField(widget=forms.PasswordInput)
def clean_email(self):
email = self.cleaned_data.get('email')
if email:
import requests
payload = {'query': email}
r = requests.get('http://172.16.16.172/check_email.php', params=payload)
result = r.json()
print r.url
status = result['available']
if status == False:
raise forms.ValidationError('This login name is unavailable!')
return email
這是我的觀點,是處理形式:
def request_email_address(request):
if request.method == "POST":
form = RequestEmailAddressForm(request.POST)
if form.is_valid():
data = form.cleaned_data
# do something here
else:
pass
return HttpResponseRedirect('/core/home/')
else:
form = RequestEmailAddressForm()
return render(request, "core/request_email_address.html", { "form": form })
然而,形式要提交的頁面,但它沒有提高驗證錯誤。我究竟做錯了什麼?
我們展示您的視圖代碼 –
@SardorbekImomaliev我沒有寫視圖代碼呢。錯誤應該在視圖運行之前生成,我是否正確? – MiniGunnR
否。表單的驗證是通過視圖調用的。 –