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