Django 留言板的代码怎么写
时间: 2023-12-02 13:57:41 浏览: 116
以下是一个简单的 Django 留言板的代码示例:
1. 首先,创建一个 Django 应用程序:
```
python manage.py startapp messages
```
2. 在 `models.py` 文件中定义留言板的数据模型:
```python
from django.db import models
from django.contrib.auth.models import User
class Message(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
```
3. 在 `views.py` 文件中定义留言板的视图函数:
```python
from django.shortcuts import render, redirect
from .models import Message
from django.contrib import messages
def message_board(request):
if request.method == 'POST':
content = request.POST.get('content')
if content:
message = Message(user=request.user, content=content)
message.save()
messages.success(request, 'Message posted successfully!')
return redirect('message_board')
messages = Message.objects.all().order_by('-created_at')
return render(request, 'messages/message_board.html', {'messages': messages})
```
4. 在 `urls.py` 文件中定义留言板的 URL 路由:
```python
from django.urls import path
from .views import message_board
urlpatterns = [
path('message-board/', message_board, name='message_board'),
]
```
5. 最后,在 `message_board.html` 模板文件中渲染留言板的视图:
```html
{% extends 'base.html' %}
{% block content %}
<h1>Message Board</h1>
{% if user.is_authenticated %}
<form method="POST">
{% csrf_token %}
<textarea name="content" rows="4" cols="50"></textarea><br><br>
<button type="submit">Post message</button>
</form>
{% else %}
<p>Please log in to post a message.</p>
{% endif %}
{% for message in messages %}
<p>{{ message.content }} - {{ message.user.username }} ({{ message.created_at }})</p>
{% empty %}
<p>No messages yet.</p>
{% endfor %}
{% endblock %}
```
这样就可以创建一个简单的 Django 留言板了。当用户提交留言时,它将被保存到数据库中,并在视图中查询所有留言来渲染到模板中。
阅读全文
相关推荐














