Сделать сообщение в django - PullRequest
0 голосов
/ 26 марта 2020

Как вы можете разрешить пользователям публиковать что-либо на сайте, используя Django framework?

Мой файл views.py:

from django.shortcuts import render, redirect
from django.contrib.auth.decorators import login_required
from django.utils import timezone
from . import models
from django.contrib.auth.models import User

@login_required
def create(request):
    if request.method == 'POST':
        if request.POST['title'] and request.POST['url']:
            post = models.Post()
            post.title 
            post.url 
            post.pub_date 
            post.author 
            post.save()
            return redirect('create')
    else:
        return render(request, 'posts/create.html')

my models.py:

from django.db import models
from django.contrib.auth.models import User
from django.conf import settings
# Create your models here.

class Post(models.Model):
    title = models.CharField(max_length=200)
    url = models.TextField()
    pub_date = models.DateTimeField()
    author = models.ForeignKey(User, on_delete=models.CASCADE,default=1)
    votes_total = models.IntegerField(default=1)

и мое создание. html файл:

<h1> Create Post</h1>
{% if error%}
{{ error }}
{% endif%}
<br />
<br />
<br />
<form  method='POST'  action="{% url 'create' %}">
{% csrf_token %}
Title:
<input type="text" name="title">
<br />
<br />
URL:
<br />
<input type="text" name="url">
<br>
<br>
<input type="submit" value="Post">
</form>

Проблема в том, что сообщение даже не отображается в панели администратора, и я также получаю эту ошибку

NameError at /posts/create/

name 'post' is not defined

спасибо

1 Ответ

0 голосов
/ 26 марта 2020

Вы должны установить свой метод создания, как показано ниже ...

def create(request):
    if request.method == 'POST':
        if request.POST.get('title') and request.POST.get('url'):

            title = request.POST.get('title') 
            url = request.POST.get('url')
            pub_date = request.POST.get('pub_date') 
            author = request.POST.get('author')
            post_obj = Post.objects.create(title=title, url=url, pub_date=pub_date, author=author) 

            return redirect('create')
    else:
        return render(request, 'posts/create.html')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...