简体   繁体   English

Django 应用程序在部署到 heroku 后无法正常工作

[英]Django App Not Working After Deployment to heroku

The App is A Blog Post App That is Working fine Locally But After I Deployed It To Heroku, The App Cannot run.该应用程序是一个博客帖子应用程序,在本地运行良好,但在我将其部署到 Heroku 后,该应用程序无法运行。 I did more Than a week trying to fix it through the views and models with no success.我做了一个多星期试图通过视图和模型来修复它,但没有成功。

This Is The Error When Trying To Open The App这是尝试打开应用程序时的错误

views.py视图.py

from django.shortcuts import render,get_object_or_404, get_list_or_404
from posts.models import Post, Category
# Create your views here.

import datetime



 def index(request):

    now = datetime.datetime.now()
    big_slider_list = Post.objects.filter(category__name='Big_Slider')
    news_box_list = Post.objects.filter(category__name='People')

    cote_divoire_list = Post.objects.filter(category__name="Côte d'Ivoire").exclude(position=1)
    block1_big = Post.objects.filter(position=1)

    culture_list = Post.objects.filter(category__name="Culture").exclude(position=2)
    block2_big = Post.objects.filter(position=2)

    sport_list = Post.objects.filter(category__name="Sports").exclude(position=3)
    block3_big = Post.objects.filter(position=3)

    infrast_et_devel_list = Post.objects.filter(category__name="Infrastructures Et Dévelopements")

    context = {
        'now': now,

        'big_slider_list': big_slider_list[:10],
        'news_box_list': news_box_list[:4],

        'cote_divoire_list': cote_divoire_list[:4],
        'block1_big': block1_big[0],

        'culture_list': culture_list[:3],
        'block2_big': block2_big[0],

        'sport_list': sport_list[:3],
        'block3_big': block3_big[0],

        'infrast_et_devel_list': infrast_et_devel_list[:3],

    }
    return render(request, 'home/index.html', context)

models.py:模型.py:

from django.db import models
from django.contrib.auth import get_user_model
from django.urls import reverse
# Create your models here.

User = get_user_model()


STATUS = (
    (0, "Draft"),
    (1, "Publish")
)

POSITIONS = [
    (0, ' '),
    (1, 'BIG_BLOCK_1'),
    (2, 'BIG_BLOCK_2'),
    (3, 'BIG_BLOCK_3'),
    (4, 'BIG_BLOCK_4'),

]

class Author(models.Model):
    name = models.CharField(max_length=50)
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    profile_picture = models.ImageField(null=True, blank=True)
    email = models.EmailField(unique=True)
    active = models.BooleanField(default=False)
    created_on = models.DateTimeField(auto_now_add=True)
    last_logged_in = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.user.username


class Category(models.Model):
    country = models.CharField(max_length=200, blank=True)
    name = models.CharField(max_length=100, unique=True)
    slug = models.SlugField(max_length=100, unique=True)
    author = models.ForeignKey(Author, on_delete=models.CASCADE,)

    def __str__(self):
        return self.name

    def get_absolute_url(self):
        return reverse('posts:post_by_category', args=[self.slug])


class Tag(models.Model):
    name = models.CharField(max_length=100, unique=True)
    slug = models.SlugField(max_length=100, unique=True)
    author = models.ForeignKey(Author, on_delete=models.CASCADE,)

    def __str__(self):
        return self.name

    def get_absolute_url(self):
        return reverse('posts:post_by_tag', args=[self.slug])


class Post(models.Model):
    status = models.IntegerField(choices=STATUS, default=0)
    position = models.IntegerField(choices=POSITIONS, default=0)
    title = models.CharField(max_length=300)
    short_title = models.CharField(max_length=200)
    display_image = models.ImageField(null=True, blank=True)
    post_image = models.ImageField(null=True, blank=True)
    content = models.TextField(max_length=8000)
    slug = models.SlugField(max_length=300, unique=True)
    updated_on = models.DateTimeField(auto_now=True, auto_now_add=False)
    created_on = models.DateTimeField(auto_now=False, auto_now_add=True)
    author = models.ForeignKey(Author, on_delete=models.CASCADE,)
    category = models.ForeignKey(Category, on_delete=models.CASCADE,)
    tags = models.ManyToManyField(Tag,)
    comment_count = models.IntegerField(default=0)

    class Meta:
        ordering = ['-created_on']
        verbose_name = "All Post"

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('posts:post_detail', kwargs={'slug': self.slug})





class Comment(models.Model):
    post = models.ForeignKey(Post, on_delete=models.CASCADE, related_name='comments')
    name = models.CharField(max_length=80)
    email = models.EmailField()
    body = models.TextField()
    created_on = models.DateTimeField(auto_now_add=True)
    active = models.BooleanField(default=False)

    class Meta:
        ordering = ['created_on']

    def __str__(self):
        return 'Comment {} by {}'.format(self.body, self.name)

It's something to do with the migrations.这与迁移有关。 Your local DB has all the migrations applied, while your Database on Heroku doesn't have the post field.您的本地数据库已应用所有迁移,而 Heroku 上的数据库没有post字段。 Maybe you added/edited the field later so your two DBs are out of sync.也许您稍后添加/编辑了该字段,因此您的两个数据库不同步。 Since this seems to be a new project without data it would be easier for you to heroku reset your heroku database and push the local db to heroku.由于这似乎是一个没有数据的新项目,因此heroku reset您的 heroku 数据库并将本地数据库push送到 heroku 会更容易。 Here are the instructions: https://devcenter.heroku.com/articles/heroku-postgres-import-export以下是说明: https://devcenter.heroku.com/articles/heroku-postgres-import-export

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM