Django入门与实践-第19章:主题回复(完结)
- #myproject/urls.py
- url(r'^boards/(?P<pk>\d+)/topics/(?P<topic_pk>\d+)/reply/$',views.reply_topic, name='reply_topic'),
- #boards/forms.py
- from .models import Post
- class PostForm(forms.ModelForm):
- class Meta:
- model = Post
- fields = ['message', ]
- #一个新的受 @login_required 保护的视图,以及简单的表单处理逻辑
- #boards/views.py
- from .forms import PostForm
- @login_required
- def reply_topic(request, pk, topic_pk):
- topic = get_object_or_404(Topic, board__pk=pk, pk=topic_pk)
- if request.method == 'POST':
- form = PostForm(request.POST)
- if form.is_valid():
- post = form.save(commit=False)
- post.topic = topic
- post.created_by = request.user
- post.save()
- return redirect('topic_posts', pk=pk, topic_pk=topic_pk)
- else:
- form = PostForm()
- return render(request, 'reply_topic.html', {'topic': topic, 'form': form})
- <!--templates/reply_topic.html-->
- {% extends 'base.html' %}
- {% load static %}
- {% block title %}Post a reply{% endblock %}
- {% block breadcrumb %}
- <li class="breadcrumb-item"><a href="{% url 'home' %}">Boards</a></li>
- <li class="breadcrumb-item"><a href="{% url 'board_topics' topic.board.pk %}">{{ topic.board.name }}</a></li>
- <li class="breadcrumb-item"><a href="{% url 'topic_posts' topic.board.pk topic.pk %}">{{ topic.subject }}</a></li>
- <li class="breadcrumb-item active">Post a reply</li>
- {% endblock %}
- {% block content %}
- <form method="post" class="mb-4">
- {% csrf_token %}
- {% include 'includes/form.html' %}
- <button type="submit" class="btn btn-success">Post a reply</button>
- </form>
- {% for post in topic.posts.all %}
- <div class="card mb-2">
- <div class="card-body p-3">
- <div class="row mb-3">
- <div class="col-6">
- <strong class="text-muted">{{ post.created_by.use rname }}</strong>
- </div>
- <div class="col-6 text-right">
- <small class="text-muted">{{ post.created_at }}</small>
- </div>
- </div>
- {{ post.message }}
- </div>
- </div>
- {% endfor %}
- {% endblock %}
- <!--templates/topic_posts.html(-->
- {% for post in topic.posts.all %}
- <div class="card mb-2 {% if forloop.first %}border-dark{% endif %}">
- {% if forloop.first %}
- <div class="card-header text-white bg-dark py-2 px-3">{{ topic.subject }}</div>
- {% endif %}
- <div class="card-body p-3">
- <!-- code suppressed -->
- </div>
- </div>
- {% endfor %}
Django入门与实践-第19章:主题回复(完结)的更多相关文章
- Django入门与实践-第15章:用户注销(完结)
# myproject/settings.py LOGOUT_REDIRECT_URL = 'home' http://127.0.0.1:8000/logout/ # myproject/urls. ...
- Django入门与实践-第26章:个性化工具(完结)
http://127.0.0.1:8000/boards/1/topics/62/reply/ 我觉得只添加内置的个性化(humanize)包就会很不错. 它包含一组为数据添加“人性化(human t ...
- Django入门与实践-第23章:分页实现(完结)
http://127.0.0.1:8000/boards/1/ #从现在起,我们将在 board_topics 这个视图中来操作. python manage.py shell from django ...
- Django入门与实践-第14章:用户注册(完结)
http://127.0.0.1:8000/signup/ django-admin startapp accounts INSTALLED_APPS = [ 'accounts', ] # mypr ...
- Django入门与实践-第13章:表单处理(完结)
http://127.0.0.1:8000/boards/1/ http://127.0.0.1:8000/boards/2/ http://127.0.0.1:8000/boards/3/ http ...
- Django入门与实践-第12章:复用模板(完结)
http://127.0.0.1:8000/http://127.0.0.1:8000/boards/1/http://127.0.0.1:8000/boards/2/http://127.0.0.1 ...
- Django入门与实践-第11章:URL 分发(完结)
http://127.0.0.1:8000http://127.0.0.1:8000/boards/1/http://127.0.0.1:8000/boards/2/http://127.0.0.1: ...
- Django入门与实践-第25章:Markdown 支持(完结)
http://127.0.0.1:8000/boards/1/topics/102/reply/ 让我们在文本区域添加 Markdown 支持来改善用户体验. 你会看到要实现这个功能非常简单. 首先, ...
- Django入门与实践-第24章:我的账户视图(完结)
http://127.0.0.1:8000/settings/account/ #好的,那么,这部分将是我们最后的一个视图.之后,我们将专心来改进现有功能. #accounts/views.py fr ...
随机推荐
- as2 无法加载类或接口
1.最大问题就是可能新建文件的时候选择as3的as或者直接复制了as3的as文件过来修改.as文件必须是2的 2.类名是否一致 3.包引用是否正确
- pycharm专业版(window)安装
1.官网下载 2. 3.直接finlsh 4. 5. https://pan.baidu.com/s/1mQcc98iJS5bnIyrC6097yA 密码:b1c1
- Apache配置本地域名
打开Apache的安装目录,找到httpd.conf文件,分别去掉下面两行文字前面的#号. LoadModule vhost_alias_module modules/mod_vhost_alias. ...
- unity Object-c交互
一.unity 调用 Object-c C/C++可以直接与Object-c交互,只要把文件后缀.m直接改成.mm,成为C/C++与Object-c混编文件.C#又可以调用C/C++方法,所以C#就是 ...
- Javaweb连接数据库
在JSP中使用JDBC驱动连接mysql数据库. 1: 下载mysql的Java连接程序 2: 解压目录下的mysql-connector-java-5.0.24-bin.jar文件就是连接MySql ...
- C#中导出EXCEL服务器端不用安装OFFICE
在实际开发过程中,有时候服务器端没安装OFFICE,你和服务器管理员去商量安装个OFFICE的时候,管理员很倔犟的不给你安装的时候,这个时候就可以考虑我这个方法是实现导出EXCEL了.如果你导出的EX ...
- oracle老是出现监听错误
解决方法之一: 点击开始-->选择程序--->选中你安装的oracle版本-->选中配置与移植工具-->选中Net Configuration Assistant-->在 ...
- Windows驱动手动卸载与安装
彻底卸载的流程 1.删除C:\windows\inf\oem.inf路径下的所有oem文件 2.删除c:\windows\system32\drivers路径下对应的sys文件 3.(重要) 第一步: ...
- tesseract 4.0 编译安装(CentOS)
1.安装依赖工具 yum install autoconf automake libtool libjpeg-devel libpng-devel libtiff-devel zlib-devel 2 ...
- where T:new() 是什么意思
经常看到方法后面加where T:new() ,下面来解释下 比如如下这个方法 protected static T CreateNewInstance<T>() where T : ...