【问题标题】:Django simple Post request is not workingDjango 简单的 Post 请求不起作用
【发布时间】:2018-03-06 17:46:06
【问题描述】:

我是 Django 新手,正在尝试构建一个简单的网页。我正在尝试发布请求,但没有值被插入到数据库中。我希望问题应该出在 views.py forms.is_valid() 因为在此行之后没有记录日志。请协助

model.py

from django.db import models
from django.contrib.auth.models import User
from django.db.models import Q
from django.forms import ModelForm
from django import forms
# Create your models here.

class aws_cred(models.Model):
    aws_access_user_id = models.ForeignKey(User,null=False,related_name="aws_acc_user")
    access_key = models.CharField(max_length=300)
    secret_key = models.CharField(max_length=300)



class aws(ModelForm):
    class Meta:
        model = aws_cred
        fields = ['access_key','secret_key','aws_access_user_id']

views.py

from django.shortcuts import render_to_response,HttpResponseRedirect,render,redirect,reverse
from django.contrib.auth.decorators import login_required
from django.template import RequestContext
from s3comp.models import aws_cred,aws
import logging

@login_required
def fileinput(req):
    logging.basicConfig(filename='log_filename.txt',level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
    if req.method == 'POST':
        form = aws(req.POST)
        logging.debug(form)
        try:
            logging.debug('step 4')
            if form.is_valid():
                logging.debug('step 5')
                access_key_val = req.POST.get('access key','')
                secret_key_val = req.POST.get('secret key','')
                aws_access_user_id_val = req.POST.get('aws access user id', '')
                logging.debug(access_key_val+" " +secret_key_val+" " +aws_access_user_id_val)
                cred_obj = aws(access_key = access_key_val,secret_key =secret_key_val,aws_access_user_id = aws_access_user_id_val)
                cred_obj.save()
                return HttpResponseRedirect(reverse('s3comp:fileinput'))
        except Exception as e:
            logging.debug(e)
    else:
        form = aws()

    return render(req,'s3comp/fileinput.html',{'form':form})

html 文件

<form action="{% url 'fileinput_home' %}" method="post">
    {% csrf_token %}
      <p><label for="Aws access user id">User:</label><input type="text" name="Aws access user id" value={{ user.get_username }}/></p>
      <p><label for="Access Key">Access Key:</label><input type="text" name="Access Key"/></p>
      <p><label for="Secret Key">Secret Key:</label><input type="text" name="Secret Key"/></p>
    <input type="submit" value="Submit">
</form>

【问题讨论】:

    标签: django python-3.x django-forms django-templates django-views


    【解决方案1】:

    你在模板和视图中使用了错误的name属性值,所以根据下面的代码更新

    <form action="{% url 'fileinput_home' %}" method="post">
        {% csrf_token %}
          <p><label for="Aws access user id">User:</label><input type="text" name="aws_access_user_id" value={{ user.get_username }}/></p>
          <p><label for="Access Key">Access Key:</label><input type="text" name="access_key"/></p>
          <p><label for="Secret Key">Secret Key:</label><input type="text" name="secret_key"/></p>
        <input type="submit" value="Submit">
    </form>
    

    Views.py

    access_key_val = req.POST.get('access_key','')
    secret_key_val = req.POST.get('secret_key','')
    aws_access_user_id_val = req.POST.get('aws_access_user_id', '')
    

    【讨论】:

    • 感谢您的回复。我已经修改了它,但它仍然没有反映在数据库中。 if form.is_valid():
    • 您在数据库中保存条目的代码也错误。
    猜你喜欢
    • 2012-12-29
    • 1970-01-01
    • 2011-08-10
    • 1970-01-01
    • 2014-11-01
    • 1970-01-01
    • 2018-12-25
    • 1970-01-01
    相关资源
    最近更新 更多