TypeError в / product / создать ожидаемую строку или байтовый объект
Ошибка :TypeError в /product/ создать ожидаемую строку или байтовый объект
Внутренняя ошибка сервера: /product/create Traceback (последний вызов последним): файл "D:\mycodes\productsupport\prodsupportenv\lib\site-packages\django\core\handlers\exception.py", строка 47, во внутреннем ответе = get_response(запрос) Файл "D:\mycodes\productsupport\prodsupportenv\lib\site-packages\django\core\handlers\base.py", строка 179, в _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) Файл "D:\mycodes\productsupport\prodsupportenv\lib\site-packages\django\contrib\auth\decorators.py", строка 21, в _wrapped_view return view_func(request, *args, **kwargs) Файл "D:\mycodes\productsupport\productsupport-project\product\views.py", строка 44, в файле create product.save()"D:\mycodes\productsupport\prodsupportenv\lib\site-packages\django\db\models\base.py", строка 750,в save self.save_base(using=using, force_insert=force_insert, File "D:\mycodes\productsupport\prodsupportenv\lib\site-packages\django\db\models\base.py", строка 787, в save_base updated = self._save_table(файл "D: \ mycodes \ productsupport \ prodsupportenv \ lib \ site-packages \ django \ db \ models \ base.py", строка 892, в _save_table results = self.do_insert (cls.base_manager, using, fields, return_fields, raw) Файл "D: \ mycodes \ productsupport \ prodsupportenv \ lib \ site-packages \ django \ db \ models \ base.py", строка 930, в диспетчере возврата do_insert.insert(файл "D:\mycodes\productsupport\prodsupportenv\lib\site-packages\django\db\models\manager.py", строка 85, в manager_method return getattr(self.get_queryset(), name)(*args, **kwargs) Файл "D:\mycodes\productsupport\prodsupportenv\lib\site-packages\django\db\models\query.py", строка 1249, ввставить return query.get_compiler(using=using).execute_sql(return_fields) Файл "D:\mycodes\productsupport\prodsupportenv\lib\site-packages\django\db\models\sql\compiler.py", строка 1394, в execute_sql для sql параметры в self.as_sql(): файл "D:\mycodes\productsupport\prodsupportenv\lib\site-packages\django\db\models\sql\compiler.py", строка 1337, в as_sql value_rows = [ File "D:\mycodes\productsupport\prodsupportenv\lib\site-packages\django\db\models\sql\compiler.py", строка 1338, в [self.prepare_value(field, self.pre_save_val(field, obj)) для поле в полях] Файл "D:\mycodes\productsupport\prodsupportenv\lib\site-packages\django\db\models\sql\compiler.py", строка 1338, в [self.prepare_value(field, self.pre_save_val(field, obj)) для поля в полях] Файл "D:\mycodes \ productsupport \ prodsupportenv \ lib \ site-packages \ django \ db \ models \ sql \ compiler.py ", строка 1279, в файле prepare_value value = field.get_db_prep_save(value, connection=self.connection) Файл" D: \ mycodes \ productsupport \ prodsupportenv \ lib \ site-packages \ django \ db \ models \ fields_init.py ", строка 823, в get_db_prep_save вернуть self.get_db_prep_value(значение, соединение = соединение, подготовлено =False) Файл" D: \ mycodes \ productsupport \ prodsupportenv \ lib \ site-packages \ django \ db \ models \ fields_init.py ", строка 1378, в get_db_prep_value value = self.get_prep_value(value) Файл" D: \ mycodes \ productsupport \ prodsupportenv \ lib \ site-packages \ django \ db \ models \ fields_init.py ", строка 1357, в get_prep_value value = super().get_prep_value(value) Файл "D: \ mycodes \ productsupport \ prodsupportenv \ lib \ site-packages \ django \ db \ models \ fields_init.py", строка 1217, в get_prep_value return self.to_python(значение) Файл "D: \ mycodes \ productsupport \ prodsupportenv \ lib \ site-packages \ django \ db \ models \ fields_init.py ", строка 1318, в to_python parsed = parse_datetime(value) Файл"D:\mycodes\productsupport\prodsupportenv\lib\site-packages\django\utils\dateparse.py", строка 107, в parse_datetime match = datetime_re.match(value) TypeError: ожидаемая строка или байтовый объект [03 / Sep / 2020 11:45:14] "POST /product/ create HTTP / 1.1" 500 148871
views.py
from django.shortcuts import render,redirect,reverse
from django.contrib.auth.decorators import login_required
from .models import Product
from django.utils import timezone
# from .forms import ProductForm
from datetime import datetime
# Create your views here.
def home(request):
return render(request,'product/home.html')
@login_required
def create(request):
# if request.method == 'POST':
# user = UserProfile.objects.get(user=request.user)
# import ipdb;ipdb.set_trace()
# request.POST['hunter']=request.user
# request.POST['votes_total']=2
# request.POST['pub_date']=datetime.now()
# form = ProductForm(request.POST, request.FILES,user=request.user)
# if form.is_valid():
# form.save()
# return redirect('home')
# else:
# return render(request,'product/create.html')
if request.method=='POST':
# import ipdb;ipdb.set_trace()
if (request.POST['title'] and request.POST['url'] and request.POST['body'] and request.FILES['image'] and request.FILES['icon']):
product=Product()
product.title=request.POST['title']
if request.POST['url'].startswith('http://') or request.POST['url'].startswith('https://'):
product.url=request.POST['url']
else:
product.url = 'http://'+ request.POST['url']
product.body=request.POST['body']
product.icon = request.FILES['icon']
product.image = request.FILES['image']
product.pub_date=timezone.datetime.now
product.hunter=request.user
product.save()
return redirect('home')
else:
return render(request,'product/create.html',{'error':'fill all the Fields'})
else:
return render(request,'product/create.html')
create.html
{
% extends 'base.html' %}
{% block content %}
{% load static %}
<div class="jumbotron text-center">
<h1><img src="{% static 'login.png' %}" alt="" height="50"> Create</h1>
<div class="container">
<br>
{% if error %}
{{error}}
{% endif %}
<form class="" action="{% url 'create' %}" method="POST" enctype="multipart/form-data" >
{% csrf_token %}
Title:
<br>
<input class="text-center " type="text" name="title">
<br>
<br>
URL:
<br>
<input class="text-center " type="text" name="url">
<br>
<br>
Description:
<br>
<textarea name="body" rows="5" cols="50"></textarea>
<br>
<br>
Icon:
<input type="file" name="icon">
<br>
<br>
Image:
<input type="file" name="image">
<br>
<br>
<input class="text-center btn btn-primary" type="submit" name="" value="add product">
</form>
</div>
</div>
{% endblock %}
models.py
from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class Product(models.Model):
title=models.CharField(max_length=200)
url=models.TextField()
image=models.ImageField(upload_to='images/')
icon=models.ImageField(upload_to='images/')
body = models.TextField()
hunter=models.ForeignKey(User,on_delete=models.CASCADE)
votes_total=models.IntegerField(default=1)
pub_date=models.DateTimeField()
def pub_date_pretty(self):
return self.pub_date.strftime('%b %e %Y')
def summary(self):
return self.body[:100]+'...'
def __str__(self):
return self.title