сохранение значений из html в mysql через django

#python #mysql #django

#python #mysql #django

Вопрос:

я хочу отправить данные в мою базу данных mysql через django. Когда я запускаю сервер, я не получаю никаких ошибок. Когда я отправляю форму из hello.html , значения не хранятся в моей БД. в БД я получил таблицу hello_cont

hello.html

    {% block content %}
    <form action="/polls/" method="POST"> {% csrf_token %}
      <input class="form-control" id="name" name="name" placeholder="Name" type="text" required>
    </div>
    <div class="col-sm-6 form-group">
      <input class="form-control" id="email" name="email" placeholder="Email" type="email" required>
    </div>
  </div>
  <textarea class="form-control" id="comments" name="comments" placeholder="Comment" rows="5"></textarea><br>
  <div class="row">
    <div class="col-sm-12 form-group">
      <button class="btn btn-default pull-right" type="submit">Send</button>
    </form>
  

{% endblock %}

models.py

 from __future__ import unicode_literals
from django.db import models

class cont(models.Model):
    name = models.CharField(max_length=10)
    email = models.CharField(max_length=10)
    comments= models.CharField(max_length=250)


def __str__(self):       


        return self.name
  

forms.py

 from django import forms
from .models import cont

class PostForm(forms.ModelForm):

    class Meta:
        model = cont
        fields = ('name', 'email', 'comments')
  

view.py

     from django.utils import timezone
    from django.shortcuts import render
    from django.http import HttpResponseRedirect
    from .models import cont
    from .forms import PostForm


    def hello(request):
            return render(request, 'polls/hello.html')
    def post_new(request):
        if request.method == "POST":
            form = PostForm(request.POST)
            if form.is_valid():
                post = form.save(commit=False)
                post.name = request.user
                post.email = request.email
                post.comments = request.comments
                post.save()
    else:
            form = PostForm()
        return render(request, 'blog/post_edit.html', {'form': form

})
  

polls/urls.py

 from django.conf.urls import url
from . import views
urlpatterns = [
    url(r'^$', views.post_list, name='post_list'),
    url(r'^post/(?P<pk>d )/$', views.post_detail, name='post_detail'),
    url(r'^post/new/$', views.post_new, name='post_new'),
]
  

urls.py

 from django.conf.urls import include, url
from django.contrib import admin
from polls.views import hello
urlpatterns = [
    url(r'^admin/', admin.site.urls),
 url(r'', include('polls.urls')),
  

]

Комментарии:

1. форма отправляется в /polls ( action="/polls" ) . Что у вас есть в urls.py' ? Is / polls` назначено post_new ?

2. Предположительно, ваша форма не проходит проверку, но вы не показываете ни одной ошибки в шаблоне.

3. кстати: вы всегда можете использовать print() in code и запустить Django server в терминале, чтобы увидеть печатный текст — т. Е. Значения в переменных if form.is_valid() и т. Д.

4. Я добавил свой основной urls.py Я получаю 200 http-ответов