python - 如何在不使用自动模型表单的情况下从 Django 的文本框中获取数据?

标签 python database django forms model

我想做一件非常简单的事情,但由于某种原因我还没有找到解决方案。 我有一个 HTML 表单

<form id="user_form" method="POST" action="/ProjectName/home/">

    {% csrf_token %}

    <div class="registerLabel">
        Full name:
    </div>
    <div class="registerTextLabel">
        <input type="text" id="registerFullName" class="registerTextDetails">
    </div>
    <div class="registerLabel">
        Username:
    </div>
    <div class="registerTextLabel">
        <input type="text" id="registerUsername" class="registerTextDetails">
    </div>

    <div id="registerButtonDiv">
        <button class="registerButtons" id="cancelRegisterButton">Cancel</button>
        <button type="submit" class="registerButtons" id="submitRegistration">Register</button>
    </div>
</form>

我想要的是在填写此表单并提交它以获取所有文本框值并将其放入我的数据库中。

数据库模型是这样实现的:

class User(models.Model):
    username = models.CharField(max_length=200)
    password = models.CharField(max_length=200)
    ...
    def __unicode__(self):
        return self.username

这是 View 的代码:

def register(request):
    context = RequestContext(request)
    registed = False
    if request.method == 'POST':
        form = User(data = request.POST)
        username = request.POST.get('registerUsername')
        password = request.POST.get('registerPass')
        user = form.save()
        username = User.username
        password = User.password
        u = User(username,password,...)
        u.save()
        registered = True
        else:
            form = User()

        return render_to_response('ProjectName/home.html', {'user_form':User}, context)

我不想使用 Django 从模型生成表单的自动化方式。

最佳答案

您忘记在表单中定义名称。这对于获取 POST 数据很重要。

<form .........>
   {{error}}<br/><br/>
<div class="registerLabel">Username:</div>
<div class="registerTextLabel">
    <input type="text" id="registerUsername" name="registerUsername" class="registerTextDetails">
</div>

<div class="registerLabel" id="registerLabelPass">Password:</div>
<div class="registerTextLabel">
    <input type="password" id="registerPass" name="registerPass" class="registerTextDetails">
</div>
</form>

def register(request):
    context = RequestContext(request)
    registered = False
    error = ''
    if request.method == 'POST':
        username = request.POST.get('registerUsername')
        password = request.POST.get('registerPass')

        if username and password:
            username_exist = User.objects.filter(username=username)
            if username_exist:
                error = username is already taken, try another
            else:
                User.objects.create(username=username, password=password)
                registered = True
        else:
            error = all fields are required

    return render_to_response('ProjectName/home.html', {'error':error}, context)

关于python - 如何在不使用自动模型表单的情况下从 Django 的文本框中获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15323880/

相关文章:

Python doctest 失败示例

ruby-on-rails - 切换 Ruby on Rails 数据库

mysql - 设计数据库 : Linking lots of values between tables

database - 如何转储 django-cms 相关内容以便与正在运行的实例一起迁移?

django - 通过django中的字段查询中间

python - 如何访问django模板中的字典值

python - 简化 Flask 中的日志记录

Python Pandas : Group datetime column into hour and minute aggregations

python - Django - 如何链接表格

python - 如何提高循环性能