美文网首页
web应用框架——Django实践项目(十)

web应用框架——Django实践项目(十)

作者: 思君_4cd3 | 来源:发表于2020-05-28 21:23 被阅读0次

一.个人中心页面

个人中心页面链接:https://pan.baidu.com/s/1j0WxJpJI9hhkm3ppXG_ILA
提取码:z1xe

  • 将有关个人中心的页面放入到templates中


  • 写一个usercenter-base.html文件



    文件中的内容见下面链接:

https://github.com/zhaoXiY/MXOline/blob/master/templates/usercenter-base.html

  • 我们打开usercenter-info.html文件,继承刚刚我们添加的usercenter-base.html模板


  • 打开base.html添加页面链接


  • 配置url,打开MXOline/urls.py文件
url(r'^users/', include(('apps.users.urls', 'users'), namespace='users')),
  • 在apps/users目录下创建一个urls.py文件


  • 打开这个urls.py文件

from django.conf.urls import url
from apps.organizations.views import OrgView, AddAsk, TeacherListView, TeacherDeatailView
from apps.users.views import UserInfoView

 urlpatterns = [
    url(r'^info/$', UserInfoView.as_view(), name='info'),

 ]
  • 打开apps/users/views.py文件
from django.contrib.auth.mixins import LoginRequiredMixin
。。。
class UserInfoView(LoginRequiredMixin, View):
    login_url = '/login/'

     def get(self, request, *args, **kwargs):
        return render(request, 'usercenter-info.html')
  • 打开usercenter-info.html文件


  • 刷新页面


二.信息传入

  • 打开usercenter-info.html文件
<form class="perinform" id="jsEditUserForm" autocomplete="off">
                    <ul class="right">
                        <li>昵&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;称:
                           <input type="text" name="nick_name" id="nick_name" value="{{ user.nick_name|default_if_none:'' }}" maxlength="10">
                            <i class="error-tips"></i>
                        </li>
                        <li>生&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;日:
                           <input type="text" id="birth_day" name="birday" value="{{user.birthday|default_if_none:''|date:'Y-m-d'}}" readonly="readonly"/>
                            <i class="error-tips"></i>
                        </li>
                        <li>性&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;别:
                            <label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="radio"  name="gender" value="male" {% if user.gender == 'male' %}checked="checked"{% endif %}  >男</label>
                            <label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="radio" name="gender" value="female" {% if user.gender == 'female' %} checked="checked" {% endif %}>女</label>
                        </li>
                        <li class="p_infor_city">地&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;址:
                            <input type="text" name="address" id="address" placeholder="请输入你的地址" value="{{user.address}}" maxlength="10">
                            <i class="error-tips"></i>
                        </li>
                        <li>手&nbsp;&nbsp;机&nbsp;&nbsp;号:
                            <input class="borderno" type="text" name="mobile" readonly="readonly" value="{{ user.mobile }}">
                            <span class="changeemai_btn green changephone-color">[修改]</span>
                        </li>
                        <li class="button heibtn">
                            <input type="button" id="jsEditUserBtn" value="保存">
                        </li>
                    </ul>
                </form>
  • 刷新页面


  • 打开usercenter-base.html文件
 <div class="personal">
                            <dl class="user fr">
                                <dd>{% if user.nick_name %}{{ user.nick_name }}{% else %}
                                    {{ user.username }}{% endif %}<img class="down fr"
                                                                       src="{% static 'images/top_down.png' %}"/></dd>
                                <dt><img width="20" height="20" src="{{ user.image.url }}"/></dt>
                                </dt>
                            </dl>
                            <div class="userdetail">
                                <dl>
                                    <dt><img width="80" height="80" src="{{ user.image.url }}"/></dt>

                                    </dt>
                                    <dd>
                                        <h2>{{ user.nick_name }}</h2>
                                        <p>{{ user.username }}</p>
                                    </dd>
                                </dl>
                                <div class="btn">
                                    <a class="personcenter fl" href="{% url 'users:info' %}">进入个人中心</a>
                                    <a class="fr" href="{% url 'logout' %}">退出</a>
                                </div>
                            </div>
                        </div>
  • 打开usercenter-mycourse.html文件
    具体页面代码:

https://github.com/zhaoXiY/MXOline/blob/master/templates/usercenter-mycourse.html

  • 修改代码内容:
<div class="personal_des permessage">
            <div class="companycenter">
                <div class="group_list brief">
                    {% for user_course in user.usercourse_set.all %}
                      <div class="module1_5 box">
{#                        <a href="{% url 'course:detail' user_course.cousrse.id %}">#}
                        <a href="#">
                            <img width="214" height="190" class="scrollLoading"
                                 src="{{user_course.course.image.url}}"/>
                        </a>
                        <div class="des">
                            <a href="course-detail.html"><h2>{{user_course.course.name}}</h2></a>
                            <span class="fl">课时:<i class="key">{{user_course.course.learn_times}}</i></span>
                            <span class="fr">学习人数:{{user_course.course.students}}</span>
                        </div>
                        <div class="bottom">
                            <span class="fl">{{user_course.course.course_org.name}}</span>
                            <span class="star fr  notlogin" data-favid="15">{{user_course.course.fav_nums}}</span>
                        </div>
                    </div>
  • 打开apps/users/urls.py文件
from django.contrib.auth.decorators import login_required
from django.views.generic import TemplateView

urlpatterns = [
    url(r'^info/$', UserInfoView.as_view(), name='info'),
    url(r'^mycourse/$',login_required(TemplateView.as_view(template_name='usercenter-mycourse.html'), login_url='/login/'),
        {"current_page": "mycourse"}, name='mycourse'),
 ]
  • 打开apps/users/views.py文件
class UserInfoView(LoginRequiredMixin, View):
    login_url = '/login/'

    def get(self, request, *args, **kwargs):
        current_page = 'info'
        return render(request, 'usercenter-info.html', {
            "current_page": current_page
        })
  • 刷新页面:


  • 打开apps/users/urls.py
from apps.users.views import UserInfoView, MyFavOrgView, MyFavCourseView, MyFavTeacherView
。。。
        url(r'^myfavorg/$', MyFavOrgView.as_view(), name='myfavorg'),
    url(r'^myfav_teacher/$', MyFavTeacherView.as_view(), name='myfav_teacher'),
    url(r'^myfav_course/$', MyFavCourseView.as_view(), name='myfav_course'),
  • 打开apps/users/views.py
from apps.operations.models import UserFavorite
from apps.organizations.models import CourseOrg
...
class MyFavOrgView(LoginRequiredMixin, View):
    login_url = '/login/'

     def get(self, request, *args, **kwargs):
        current_page = 'myfavorg'
        fav_orgs = UserFavorite.objects.filter(user=request.user,fav_type = 2)
        org_list = []
        for fav_org in fav_orgs:
            org = CourseOrg.objects.get(id = fav_org.fav_id )
            org_list.append(org)
        return render(request, 'usercenter-fav-org.html', {
            "current_page": current_page,
            "org_list":org_list
        })
class MyFavTeacherView(LoginRequiredMixin, View):
    login_url = '/login/'

     def get(self, request, *args, **kwargs):
        pass


 class MyFavCourseView(LoginRequiredMixin, View):
    login_url = '/login/'

     def get(self, request, *args, **kwargs):
        pass
  • 打开templates/usercenter-base.html文件


  • 打开templates/usercenter-fav-org.html文件,修改收藏的模板
    文件链接为:

https://github.com/zhaoXiY/MXOline/blob/master/templates/usercenter-fav-org.html

  • 刷新页面


三、修改密码

  • 打开usercenter-info.html文件


  • 找到static文件夹,右击全局搜索


  • 搜索刚刚的id,我们就会找到这个文件


  • 打开apps/users/urls.py文件
from apps.users.views import UserInfoView, MyFavOrgView, MyFavCourseView, MyFavTeacherView, ChangePwdView
url(r'^update/pwd/$', ChangePwdView.as_view(), name='update_pwd'),
  • 打开apps/users/form.py文件
 class ChangePwodForm(forms.Form):
    password1 = forms.CharField(required=True, min_length=5)
    password2 = forms.CharField(required=True, min_length=5)

     def clean(self):
        pwd1 = self.cleaned_data["password1"]
        pwd2 = self.cleaned_data["password2"]
        if pwd1 != pwd2:
            raise forms.ValidationError("密码不一致")
        return self.cleaned_data
  • 打开apps/users/views.py文件
from django.http import HttpResponse, HttpResponseRedirect, JsonResponse
from apps.users.form import LoginForm, ChangePwodForm
。。。
class ChangePwdView(LoginRequiredMixin, View):
    login_url = '/login/'

    def post(self, request, *args, **kwargs):
        pwd_form = ChangePwodForm(request.POST)
        if pwd_form.is_valid():
            pwd1 =request.POST.get("password1","")
            user = request.user
            user.set_password(pwd1)
            user.save()
            return JsonResponse({"status":"success"})
        else:
            return JsonResponse(pwd_form.errors)
  • 打开templates/usercenter-base.html文件


  • 刷新页面


(此文章仅作为个人学习笔记使用,如有错误欢迎指正~)

这些的代码可在我的GitHub上面查看:

https://github.com/zhaoXiY/MXOline

相关文章

网友评论

      本文标题:web应用框架——Django实践项目(十)

      本文链接:https://www.haomeiwen.com/subject/wtfcohtx.html