Django 不要Django Form 如何使用creditor
时间: 2023-06-16 17:07:22 浏览: 141
详解Django中的form库的使用
如果你不想使用Django Form,你可以使用Django的视图函数和模板来处理表单数据和验证。在视图函数中,你可以使用Django的request对象来获取表单数据,然后使用Python中的正则表达式或其他库来验证数据。
在模板中,你可以使用HTML表单元素来显示表单,并使用Django的模板标签和过滤器来渲染表单元素和错误信息。
下面是一个简单的示例,演示如何使用Django视图函数和模板来处理表单数据和验证:
在urls.py中设置路由:
```python
from django.urls import path
from . import views
urlpatterns = [
path('creditor/', views.creditor_view, name='creditor'),
]
```
在views.py中编写视图函数:
```python
from django.shortcuts import render
import re
def creditor_view(request):
if request.method == 'POST':
# 获取表单数据
name = request.POST.get('name')
email = request.POST.get('email')
amount = request.POST.get('amount')
# 验证数据
name_pattern = re.compile(r'^[a-zA-Z ]+$')
email_pattern = re.compile(r'^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9.-]+$')
amount_pattern = re.compile(r'^\d+$')
errors = {}
if not name_pattern.match(name):
errors['name'] = 'Invalid name'
if not email_pattern.match(email):
errors['email'] = 'Invalid email'
if not amount_pattern.match(amount):
errors['amount'] = 'Invalid amount'
if errors:
# 如果有错误,返回错误信息和表单数据
return render(request, 'creditor.html', {'errors': errors, 'name': name, 'email': email, 'amount': amount})
else:
# 如果数据有效,处理表单数据
# TODO: 处理表单数据
return render(request, 'success.html')
else:
# 如果是GET请求,显示空表单
return render(request, 'creditor.html')
```
在templates/creditor.html中编写模板:
```html
{% extends 'base.html' %}
{% block content %}
<h1>Creditor Form</h1>
<form method="post">
{% csrf_token %}
{% if errors %}
<ul>
{% for field, error in errors.items %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
<label for="name">Name:</label>
<input type="text" id="name" name="name" value="{{ name|default:'' }}"><br>
<label for="email">Email:</label>
<input type="text" id="email" name="email" value="{{ email|default:'' }}"><br>
<label for="amount">Amount:</label>
<input type="text" id="amount" name="amount" value="{{ amount|default:'' }}"><br>
<input type="submit" value="Submit">
</form>
{% endblock %}
```
在templates/success.html中编写成功页面模板:
```html
{% extends 'base.html' %}
{% block content %}
<h1>Success!</h1>
{% endblock %}
```
在base.html中编写基本页面模板:
```html
<!DOCTYPE html>
<html>
<head>
<title>{% block title %}{% endblock %} - My Site</title>
</head>
<body>
<nav>
<ul>
<li><a href="{% url 'creditor' %}">Creditor</a></li>
</ul>
</nav>
<main>
{% block content %}
{% endblock %}
</main>
</body>
</html>
```
这个示例中,我们使用了Django的request对象来获取表单数据,并使用Python中的正则表达式来验证数据。如果有错误,我们将错误信息返回到模板中,并显示在表单上方。如果数据有效,我们将表单数据处理,并显示成功页面。
阅读全文