使用Django创建一个非常简单的网站:值得吗?

使用Django创建一个非常简单的网站:值得吗?,django,Django,大家好,最近怎么样 我最近刚开始使用Django,我已经开始对它有所了解;我需要建立一个关于汽车的网站,有两个主要的应用程序: 卡斯卡塔洛格 新闻组 我发现我可以从管理面板管理新闻这一事实非常有用。我创建了典型的模型: class Post(models.Model): title = models.CharField(max_length = 140) date = models.DateTimeField() body = models.TextField() def __s

大家好,最近怎么样

我最近刚开始使用Django,我已经开始对它有所了解;我需要建立一个关于汽车的网站,有两个主要的应用程序:

卡斯卡塔洛格

新闻组

我发现我可以从管理面板管理新闻这一事实非常有用。我创建了典型的模型:

class Post(models.Model):       
title = models.CharField(max_length = 140)
date = models.DateTimeField()
body = models.TextField()

def __str__(self):
    return self.title
使用url.py,如下所示

url(r'^(?P<pk>\d+)$', DetailView.as_view(
   model = Post,
   template_name="news/post.html"))

url(r'^$', ListView.as_view(                                                    
                                queryset=Post.objects.all().order_by("-date")[:25],         
                                template_name="news/news.html")),
我修改了news/admin.py,使它现在看起来像这样:

from django.db import models
from django.template.defaultfilters import slugify

class Post(models.Model):           
    title = models.CharField(max_length = 140)
    date = models.DateTimeField()
    body = models.TextField()
    slug = models.SlugField(title, max_length=100, unique=True)

    def __str__(self):
        return self.title

    def slug(self):
        return slugify(self.title)
from django.contrib import admin
from news.models import Post

admin.site.register(Post)

class NewsAdmin(admin.ModelAdmin):
    prepopulated_fields = {"slug": (Post.slug)}  <!-- that seems makes sense looking at the Model - I also tryed {"slug": (title,)}, {"slug": (Post.title)}-->
from django.conf.urls import url 
from django.views.generic import ListView, DetailView
from news.models import Post 

urlpatterns = [ 
            url(r'^$', ListView.as_view(                                                    
                                queryset=Post.objects.all().order_by("-date")[:25],         
                                template_name="news/news.html")),                           

            url(r'^(?P<slug>[\w-]+)$', DetailView.as_view(
                                model = Post,
                                template_name="news/post.html")),
        ]
来自django.contrib导入管理
从news.models导入Post
管理站点注册(Post)
类NewsAdmin(admin.ModelAdmin):
预填充的_字段={“slug”:(Post.slug)}
我修改了news/url.py,使其现在看起来像这样:

from django.db import models
from django.template.defaultfilters import slugify

class Post(models.Model):           
    title = models.CharField(max_length = 140)
    date = models.DateTimeField()
    body = models.TextField()
    slug = models.SlugField(title, max_length=100, unique=True)

    def __str__(self):
        return self.title

    def slug(self):
        return slugify(self.title)
from django.contrib import admin
from news.models import Post

admin.site.register(Post)

class NewsAdmin(admin.ModelAdmin):
    prepopulated_fields = {"slug": (Post.slug)}  <!-- that seems makes sense looking at the Model - I also tryed {"slug": (title,)}, {"slug": (Post.title)}-->
from django.conf.urls import url 
from django.views.generic import ListView, DetailView
from news.models import Post 

urlpatterns = [ 
            url(r'^$', ListView.as_view(                                                    
                                queryset=Post.objects.all().order_by("-date")[:25],         
                                template_name="news/news.html")),                           

            url(r'^(?P<slug>[\w-]+)$', DetailView.as_view(
                                model = Post,
                                template_name="news/post.html")),
        ]
从django.conf.url导入url
从django.views.generic导入ListView,DetailView
从news.models导入Post
urlpatterns=[
url(r'^$',ListView.as_视图(
queryset=Post.objects.all().order_by(“-date”)[:25],
template_name=“news/news.html”),
url(r'^(?P[\w-]+)$”,DetailView.as\u视图(
模型=员额,
template_name=“news/post.html”),
]
然后我给出: python3.5 manage.py运行服务器 而且运行起来没有问题。 所以我转到/admin,我创建了一个新帖子,它创建了它。。。 但是接下来会发生什么呢? 它仍然使用旧的“范例”来生成url,包括在我删除客户端之前使用的旧密钥(id)。。。所以我期望的是mysite/news/new human level urld news之类的东西 原来是mysite/news/11

LOL:D,幸运的是,浏览器也给了我一个错误

“字段错误位于/news/11 无法将关键字“slug”解析为字段。选项包括:正文、日期、id、标题”


现在我找不到答案,我发现了太多的东西,以至于我不知道如何把它们混在一起。我会继续寻找。谢谢你的帮助!现在谢谢你!!!:D

根据我对您的问题的理解,您需要的不是为您拥有的每辆车创建查看功能。 实际上,您需要创建一个模板(html页面)来描述您的CarsCatalogue,其中所有CarsCatalogue都具有相同的结构和不同的信息。然后用户从下拉控件中选择一个CarsCatalogue,然后从数据库中加载数据并在模板中显示结果。 为了实现这一点,请查看以下主题: . 为了从数据库中获取数据,你需要在url中传递id,你可以在官方网站上看到这个答案

简而言之,django是一种制作网站的简单方法,绝对不需要多次重写代码

不,不需要创建多个URL

据我所知,你想要每辆车的目录

只需创建一个视图,从中显示所有汽车的名称

然后,当您单击一辆车时,向get request pass your selected car details中的另一个查看功能发出get请求。现在使用Django模板。为您的目录创建Django模板,将特定于汽车的数据传递给它


您需要了解Django模板,我认为Django模板可以解决您的问题。

我认为您缺少的是URL中的参数可以是任何内容,而不仅仅是数字URL。如果它是一个字符串,我们称之为slug,如果您设置该选项,Django管理员将自动从模型中的字段创建slug

然后,您可以在URL中使用该段代码:

url(r'^(?P<slug>[\w-]+)$', DetailView.as_view(
   model = Car,
   template_name="news/car.html"))
url(r'^(?P[\w-]+)$”,DetailView.as\u视图(
型号=汽车,
模板(name=“news/car.html”))

Django将使用该字段而不是ID来查找要显示的正确内容。

我找到了解决问题的方法

尽管我一开始是询问汽车目录,但我会解释我使用新闻应用程序做了什么,因为逻辑是一样的,这是我在第一次编辑我的帖子时修改的应用程序。 在模板内部,有一个“news.html”页面来呈现所有帖子的列表,还有一个“Post.html”来呈现每个帖子

以下是有关如何设置可直接从“管理”面板管理并使用SLUG字段作为URL的应用程序的过程的一部分

models.py:

from django.db import models

class Post(models.Model):           
    title = models.CharField(max_length = 140)
    body = models.TextField()
    slug = models.SlugField(unique=True)

def __str__(self):
    return self.title
admin.py:

from django.contrib import admin
from news.models import Post

class PostAdmin(admin.ModelAdmin):
    model = Post
    prepopulated_fields = {'slug': ('title',)}

admin.site.register(Post, PostAdmin)
URL.py:

from django.conf.urls import url 
from django.views.generic import ListView, DetailView
from news.models import Post

urlpatterns = [ 
                url(r'^$', ListView.as_view(                                                    
                                queryset=Post.objects.all(),            
                                template_name="news/news.html")),                           

            url(r'^(?P<slug>[\w-]+)$', DetailView.as_view(
                                queryset=Post.objects.all(),
                                model = Post,
                                template_name="news/post.html")), 

        ]
从django.conf.url导入url
从django.views.generic导入ListView,DetailView
从news.models导入Post
urlpatterns=[
url(r'^$',ListView.as_视图(
queryset=Post.objects.all(),
template_name=“news/news.html”),
url(r'^(?P[\w-]+)$”,DetailView.as\u视图(
queryset=Post.objects.all(),
模型=员额,
template_name=“news/post.html”),
]
我希望这对某人有用

天哪,你必须努力学习才能使用这个框架:D


谢谢大家的支持,cya:)

您需要提供更多信息。你当然不应该需要100个URL-你需要在每个汽车页面中更改什么?嗨,丹尼尔,谢谢你的回答!我正在使用Jinja扩展我的标题,所以我不是从头开始创建所有页面;每个汽车页面都会有几张照片/幻灯片、一段来自youtube的视频、段落文本,以及一些根据车型进行的个性化设置。谢谢我需要它,以便我可以张贴在社会等“人性化”的链接,如“网站。汽车/CarsCatalogue/阿斯顿马丁数据库”!我有一个templates/CarsCatalogue文件夹,我想我需要在ur中定义它