我们来看看Chatgpt 与国内开源的大语言模型给出的结果对比
Chatgpt 3.5
开发思路:
-
1.创建一个 Django 项目,并创建一个名为 cms 的 app,用于实现文章管理系统的功能。
-
2.在 cms 应用中创建一个名为 models.py 的文件,用于定义文章模型,字段包括:标题、分类、作者、内容、发表时间。
-
3.在 models.py 文件中创建一个 Article 类,继承自 models.Model,并定义上述字段。
-
4.在 admin.py 文件中注册 Article 模型,以便在 Django 后台管理中对其进行管理。
-
5.创建一个名为 views.py 的文件,用于定义文章列表、文章详情、添加文章、编辑文章和删除文章等视图函数。
-
6.在 views.py 文件中定义一个 index 函数,用于显示文章列表。
-
7.在 index 函数中通过 Article.objects.all() 查询出所有文章,并将其传递给模板。
-
8.在 templates 目录下创建一个名为 index.html 的模板文件,用于显示文章列表。
-
9.在 index.html 模板文件中使用 Django 模板语法循环遍历所有文章,并显示文章的标题、分类、作者、发表时间等信息。
-
10.在 views.py 文件中定义一个名为 detail 的函数,用于显示文章详情。
-
11.在 detail 函数中通过接收文章 ID 查询出对应的文章,并将其传递给模板。
-
12.在 templates 目录下创建一个名为 detail.html 的模板文件,用于显示文章详情。
-
13.在 detail.html 模板文件中使用 Django 模板语法显示文章的标题、分类、作者、内容、发表时间等信息。
-
14.在 views.py 文件中定义一个名为 add 的函数,用于添加文章。
-
15.在 add 函数中通过 request.POST 获取表单数据,创建一个 Article 对象,并将其保存到数据库中。
-
16.在 templates 目录下创建一个名为 add.html 的模板文件,用于显示添加文章的表单。
-
17.在 add.html 模板文件中使用 Django 表单标签和模板继承,定义表单字段和提交按钮,并将其包含在一个表单标签中。
-
18.在 views.py 文件中定义一个名为 edit 的函数,用于编辑文章。
-
19.在 edit 函数中通过接收文章 ID 查询出对应的文章,并用其数据填充一个表单实例。
-
20.在 edit 函数中通过 request.POST 获取表单数据,并将其保存到数据库中。
-
21.在 templates 目录下创建一个名为 edit.html 的模板文件,用于显示编辑文章的表单。
-
22.在 edit.html 模板文件中使用 Django 表单标签和模板继承,定义表单字段和提交按钮,并将其包含在一个表单标签中。
-
23.在 views.py 文件中定义一个名为 delete 的函数,用于删除文章。
-
24.在 delete 函数中通过接收文章 ID 查询出对应的文章,并将其从数据库中删除。
-
25.在 templates 目录下创建一个名为 delete.html 的模板文件,用于提示用户文章删除成功。
代码实现:
models.py 文件:
from django.db import models
class Article(models.Model):
title = models.CharField(max_length=100)
category = models.CharField(max_length=50)
author = models.CharField(max_length=50)
content = models.TextField()
pub_date = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
admin.py 文件:
from django.contrib import admin
from .models import Article
admin.site.register(Article)
views.py 文件:
from django.shortcuts import render, get_object_or_404, redirect
from .models import Article
from .forms import ArticleForm
def index(request):
articles = Article.objects.all()
return render(request, 'cms/index.html', {'articles': articles})
def detail(request, article_id):
article = get_object_or_404(Article, pk=article_id)
return render(request, 'cms/detail.html', {'article': article})
def add(request):
if request.method == 'POST':
form = ArticleForm(request.POST)
if form.is_valid():
form.save()
return redirect('cms:index')
else:
form = ArticleForm()
return render(request, 'cms/add.html', {'form': form})
def edit(request, article_id):
article = get_object_or_404(Article, pk=article_id)
if request.method == 'POST':
form = ArticleForm(request.POST, instance=article)
if form.is_valid():
form.save()
return redirect('cms:detail', article_id=article_id)
else:
form = ArticleForm(instance=article)
return render(request, 'cms/edit.html', {'form': form, 'article': article})
def delete(request, article_id):
article = get_object_or_404(Article, pk=article_id)
article.delete()
return render(request, 'cms/delete.html')
forms.py 文件:
from django import forms
from .models import Article
class ArticleForm(forms.ModelForm):
class Meta:
model = Article
fields = ['title', 'category', 'author', 'content']
index.html 模板文件:
{% extends 'cms/base.html' %}
{% block content %}
<h1>文章列表</h1>
<table>
<thead>
<tr>
<th>标题</th>
<th>分类</th>
<th>作者</th>
<th>发表时间</th>
</tr>
</thead>
<tbody>
{% for article in articles %}
<tr>
<td><a href="{% url 'cms:detail' article.id %}">{{ article.title }}</a></td>
<td>{{ article.category }}</td>
<td>{{ article.author }}</td>
<td>{{ article.pub_date }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endblock %}
detail.html 模板文件:
{% extends 'cms/base.html' %}
{% block content %}
<h1>{{ article.title }}</h1>
<p>{{ article.content }}</p>
<p>分类:{{ article.category }}</p>
<p>作者:{{ article.author }}</p>
<p>发表时间:{{ article.pub_date }}</p>
<a href="{% url 'cms:edit' article.id %}">编辑</a>
<a href="{% url 'cms:delete' article.id %}">删除</a>
{% endblock %}
add.html 模板文件:
{% extends 'cms/base.html' %}
{% block content %}
<h1>添加文章</h1>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">提交</button>
</form>
{% endblock %}
edit.html 模板文件:
{% extends 'cms/base.html' %}
{% block content %}
<h1>编辑文章</h1>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">提交</button>
</form>
{% endblock %}
delete.html 模板文件:
{% extends 'cms/base.html' %}
{% block content %}
<h1>文章删除成功!</h1>
{% endblock %}
国内某开源大语言模型
好的,让我们来一步步实现一个类似dedecms的文章管理系统。
创建Django项目和应用
首先创建一个Django项目,并在其中创建一个名为“article”的应用。使用以下命令:
django-admin startproject myproject
cd myproject
python manage.py startapp article
编写模型
我们需要编写模型来表示文章。在article/models.py
文件中定义一个Article类:
from django.db import models
class Article(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
pub_date = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
在这里,我们定义了一个包含标题、内容和发布日期属性的Article类,并且将其转换为字符串时返回标题。
创建视图函数
接下来我们需要为这个应用添加一些视图函数,以展示和处理文章数据。在article/views.py
文件中,定义以下三个视图函数:
from django.shortcuts import render, get_object_or_404, redirect
from .models import Article
def article_list(request):
articles = Article.objects.all()
return render(request, 'article_list.html', {'articles': articles})
def article_detail(request, pk):
article = get_object_or_404(Article, pk=pk)
return render(request, 'article_detail.html', {'article': article})
def article_create(request):
if request.method == 'POST':
title = request.POST['title']
content = request.POST['content']
article = Article(title=title, content=content)
article.save()
return redirect('article_detail', pk=article.pk)
else:
return render(request, 'article_create.html')
这三个视图函数分别用于展示文章列表、文章详情和创建新的文章。我们使用Django内置的render函数来渲染模板,并将相关的数据传递给模板。
编写URLconf
现在我们需要为这些视图函数添加URL路由。在article/urls.py
文件中,定义以下URL:
from django.urls import path
from . import views
urlpatterns = [
path('', views.article_list, name='article_list'),
path('<int:pk>/', views.article_detail, name='article_detail'),
path('create/', views.article_create, name='article_create'),
]
这里使用path()函数定义URL路由,将URL映射到指定的视图函数。我们使用<int:pk>/
来定义一个整数参数pk,以便在URL中传递文章ID。
编写模板
最后,我们需要编写模板来呈现页面。在templates
目录下创建以下三个模板:
-
article_list.html:展示文章列表
-
article_detail.html:展示单篇文章
-
article_create.html:创建新文章
这些模板可以根据自己的需求进行设计,以下是一个简单的示例:
article_list.html
<h1>Article List</h1>
<ul>
{% for article in articles %}
<li><a href="{% url 'article_detail' article.pk %}">{{ article.title }}</a></li>
{% endfor %}
</ul>
<a href="{% url 'article_create' %}">Create New Article</a>
article_detail.html
<h1>{{ article.title }}</h1>
<p>{{ article.content }}</p>
<p>Published on {{ article.pub_date }}</p>
<a href="{% url 'article_list' %}">Back to Article List</a>
article_create.html
<h1>Create New Article</h1>
<form method="post">
{% csrf_token %}
<label for="title">Title:</label><br>
<input type="text" id="title" name="title"><br>
<label for="content">Content:</label><br>
<textarea id="content" name="content"></textarea><br>
<input type="submit" value="Submit">
</form>
<a href="{% url 'article_list' %}">Back to Article List</a>
以上就是一个简单的类似dedecms的文章管理系统的实现。
当然,在实际开发中可能还需要更多的功能和细节的完善,比如文章的编辑、删除,以及用户登录、权限管理等。
在这里我们还可以使用Django自带的认证系统来实现用户登录和权限管理。具体的步骤可以参考以下链接:
总之,通过以上的步骤我们可以搭建一个基础的文章管理系统,并且可以根据需求进一步扩展和优化。