diff --git a/article/__pycache__/admin.cpython-36.pyc b/article/__pycache__/admin.cpython-36.pyc index 138dee6..7c3c43a 100644 Binary files a/article/__pycache__/admin.cpython-36.pyc and b/article/__pycache__/admin.cpython-36.pyc differ diff --git a/article/__pycache__/models.cpython-36.pyc b/article/__pycache__/models.cpython-36.pyc index 433674b..4db1440 100644 Binary files a/article/__pycache__/models.cpython-36.pyc and b/article/__pycache__/models.cpython-36.pyc differ diff --git a/article/__pycache__/views.cpython-36.pyc b/article/__pycache__/views.cpython-36.pyc index ff3fc18..c6e8e2b 100644 Binary files a/article/__pycache__/views.cpython-36.pyc and b/article/__pycache__/views.cpython-36.pyc differ diff --git a/article/admin.py b/article/admin.py index 994e347..7eca4d5 100644 --- a/article/admin.py +++ b/article/admin.py @@ -3,7 +3,7 @@ # Register your models here. class ArticleAdmin(admin.ModelAdmin): - list_display = ('id','section','title','author','author_id','publish_time','readtime','visible') + list_display = ('id','section','title','author_id','publish_time','readtime','visible') #search_fields = ('section__name',) admin.site.register(Article,ArticleAdmin) diff --git a/article/migrations/0017_remove_article_author.py b/article/migrations/0017_remove_article_author.py new file mode 100644 index 0000000..bf3a0f1 --- /dev/null +++ b/article/migrations/0017_remove_article_author.py @@ -0,0 +1,17 @@ +# Generated by Django 2.0.2 on 2018-03-04 05:45 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('article', '0016_comment_invalid'), + ] + + operations = [ + migrations.RemoveField( + model_name='article', + name='author', + ), + ] diff --git a/article/migrations/__pycache__/0017_remove_article_author.cpython-36.pyc b/article/migrations/__pycache__/0017_remove_article_author.cpython-36.pyc new file mode 100644 index 0000000..4261bfd Binary files /dev/null and b/article/migrations/__pycache__/0017_remove_article_author.cpython-36.pyc differ diff --git a/article/models.py b/article/models.py index ad3db8c..0b46fbd 100644 --- a/article/models.py +++ b/article/models.py @@ -27,8 +27,6 @@ class Article(models.Model): id=models.AutoField(primary_key=True) section=models.ForeignKey(Section,on_delete=models.CASCADE,default=0) author_id = models.ForeignKey(Profile,on_delete=models.CASCADE,default=0) - author = models.CharField(max_length=128,default='') - #author_id = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE) publish_time = models.DateTimeField(auto_now_add=True,editable=False) cover = models.ImageField(upload_to='static/upload/', blank=True, null=True) title = models.CharField(max_length=1024) @@ -55,20 +53,17 @@ class Meta: class ArticleForm(ModelForm): class Meta: model = Article - fields = ['title','author','author_id','section','tag','cover','detail'] + fields = ['title','author_id','section','tag','cover','detail'] error_messages = { 'section':{'required': '请选择主题分区'}, - 'author':{'required': '请输入作者名称'}, 'cover':{'required': '请上传封面图'}, 'detail':{'required': '请输入正文内容'}, 'title':{'required': '请输入文章标题'}, - } widgets = { 'detail':TinyMCE(attrs={'cols':'100%','rows':30}), 'cover':FileInput(attrs={'style':'width:50%','class':'form-control','placeholder':"封面"}), 'tag':TextInput(attrs={'class':'form-control','placeholder':"添加标签,回车确认",'data-role':'tagsinput'}), - 'author':TextInput(attrs={'class':'form-control','placeholder':"署名"}), 'title':TextInput(attrs={'style':'width:50%','class':'form-control','placeholder':"标题"}), 'section':widgets.Select(choices=Section.objects.values_list('id','name'),attrs={'class':'form-control','placeholder':"标题"}), } @@ -97,6 +92,9 @@ class CommentForm(ModelForm): class Meta: model = Comment fields = ('article','user','comment','ip','invalid') + error_messages = { + 'user':{'required': '请先登录','invalid_choice':'请先登录!'}, + } widgets = { 'comment':TinyMCE(attrs={'cols':'100%','rows':10}), } diff --git a/article/templates/article/detail.html b/article/templates/article/detail.html index 0791168..52c8a4d 100644 --- a/article/templates/article/detail.html +++ b/article/templates/article/detail.html @@ -105,7 +105,7 @@
@@ -52,7 +53,7 @@ $.notify({ message: '{{ error|escape }}', },{ - type: 'warning', + type: 'danger', delay: 5000, timer: 1000, animate: { diff --git a/userpage/templates/userpage/profile.html b/userpage/templates/userpage/profile.html index 626af9a..ad038c1 100644 --- a/userpage/templates/userpage/profile.html +++ b/userpage/templates/userpage/profile.html @@ -1,5 +1,6 @@ {% extends "base.html"%} {% load timetonow %} +{% load displayName %} {% block header %}
@@ -67,7 +67,7 @@ $.notify({ message: '{{ error|escape }}', },{ - type: 'warning', + type: 'danger', delay: 5000, timer: 1000, animate: { diff --git a/userpage/templatetags/__init__.py b/userpage/templatetags/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/userpage/templatetags/__pycache__/__init__.cpython-36.pyc b/userpage/templatetags/__pycache__/__init__.cpython-36.pyc new file mode 100644 index 0000000..5da0d32 Binary files /dev/null and b/userpage/templatetags/__pycache__/__init__.cpython-36.pyc differ diff --git a/userpage/templatetags/__pycache__/displayName.cpython-36.pyc b/userpage/templatetags/__pycache__/displayName.cpython-36.pyc new file mode 100644 index 0000000..acbe23b Binary files /dev/null and b/userpage/templatetags/__pycache__/displayName.cpython-36.pyc differ diff --git a/userpage/templatetags/displayName.py b/userpage/templatetags/displayName.py new file mode 100644 index 0000000..7f8d52b --- /dev/null +++ b/userpage/templatetags/displayName.py @@ -0,0 +1,9 @@ +from django import template +from django.template.defaultfilters import stringfilter + +register = template.Library() + +@register.filter(name='displayName') +@stringfilter +def displayName(value, arg): + return eval('value.get_'+arg+'_display()') diff --git a/userpage/views.py b/userpage/views.py index b9e8f6f..87fe095 100644 --- a/userpage/views.py +++ b/userpage/views.py @@ -21,7 +21,7 @@ def profile(request, username): inst_user = User.objects.get(username=username) inst_profile = Profile.objects.get(user=inst_user) - arts = Article.objects.filter(author_id=inst_profile) + arts = Article.objects.filter(author_id=inst_profile).filter(visible="Y") comments = Comment.objects.filter(user=inst_profile).filter(invalid='N') if username == request.user.username: @@ -29,7 +29,7 @@ def profile(request, username): if request.method == 'POST': user_form = UserForm(request.POST, instance=request.user) profile_form = ProfileForm(request.POST, instance=request.user.profile) - + if user_form.is_valid() and profile_form.is_valid(): user_form.save() profile_form.save() @@ -54,8 +54,11 @@ def profile(request, username): inst_profile.save() # end notification + # point record + point = Point.objects.filter(user=inst_user).order_by('-record_time') - return render(request, 'userpage/profile.html', {'member':inst_user,'arts':arts,'comments':comments,'user_form': user_form,'profile_form': profile_form,'notice':msgs,'unread':unread}) + + return render(request, 'userpage/profile.html', {'member':inst_user,'arts':arts,'comments':comments,'user_form': user_form,'profile_form': profile_form,'notice':msgs,'points':point,'unread':unread}) else: return render(request, 'userpage/profile.html', {'member':inst_user,'arts':arts,'comments':comments}) @@ -72,20 +75,28 @@ def userlogin(request): post_check_code = request.POST.get('check_code') session_check_code = request.session['check_code'] user = authenticate(request, username=username, password=password) - print(request.environ,request.path) + if user is not None: if post_check_code.lower() == session_check_code.lower() : login(request, user) if request.POST.get('auto_login'): request.session.set_expiry(60 * 60 * 24 *30) - return redirect(request.path) + return redirect(request.POST['referer']) else: errors.append('请输入正确的验证码!') else: errors.append('用户名不存在或密码错误!') return render(request, 'userpage/login.html', {'errors':errors}) else: - return render(request,'userpage/login.html') + if 'HTTP_REFERER' in request.environ: + refer = request.environ['HTTP_REFERER'] + if '/userpage/register/' not in refer: + pass + else: + refer = '/' + else: + refer = '/' + return render(request,'userpage/login.html',{'referer':refer}) def userlogout(request): logout(request) @@ -94,10 +105,8 @@ def userlogout(request): def register(request): errors = [] - if request.method == 'GET': - obj = forms.RegisterForm() # return render(request,'register.html',{'form':obj}) - elif request.method == 'POST': + if request.method == 'POST': # print(request.POST) obj = forms.RegisterForm(request.POST) post_check_code = request.POST.get('check_code') @@ -107,8 +116,7 @@ def register(request): if post_check_code.lower() == session_check_code.lower(): # values = obj.clean() data = obj.cleaned_data - print(data) - # models.User.objects.create( + #print(data) username= data.get('username') password= data.get('pwd') email= data.get('email') @@ -117,12 +125,28 @@ def register(request): u.set_password(password) u.save() - return redirect('/userpage/login/') + point=10 + updatepoint = Point.objects.create(user=u,point_record=point,event="register") + + user = authenticate(request, username=username, password=password) + if user is not None: + login(request, user) + + return redirect(request.POST['referer']) else: errors = obj.errors print(errors) - - return render(request,'userpage/register.html',{'form':obj}) + else: + if 'HTTP_REFERER' in request.environ: + refer = request.environ['HTTP_REFERER'] + if '/userpage/register/' not in refer: + pass + else: + refer = '/' + else: + refer = '/' + obj = forms.RegisterForm() + return render(request,'userpage/register.html',{'form':obj,'referer':refer})
{{i.record_time|timetonow}},{{i.event}},{{i.point_record}}
+