我们来看看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自带的认证系统来实现用户登录和权限管理。具体的步骤可以参考以下链接:

https://docs.djangoproject.com/en/3.2/topics/auth/default/

总之,通过以上的步骤我们可以搭建一个基础的文章管理系统,并且可以根据需求进一步扩展和优化。

声明:如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。None#python87.com