123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- from django.db import connection
- from django.http import HttpResponseRedirect, JsonResponse
- from django.shortcuts import render
- from django.views.decorators.clickjacking import xframe_options_sameorigin
- from blog import models
- from blog.controller import article
- json_str = '''{
- "results": {
- "category1": {
- "name": "Category 1",
- "results": [
- {
- "title": "Result Title",
- "url": "/optional/url/on/click",
- "image": "optional-image.jpg",
- "price": "Optional Price",
- "description": "Optional Description"
- },
- {
- "title": "Result Title",
- "url": "/optional/url/on/click",
- "image": "optional-image.jpg",
- "price": "Optional Price",
- "description": "Optional Description"
- }
- ]
- },
- "category2": {
- "name": "Category 2",
- "results": [
- {
- "title": "Result Title",
- "url": "/optional/url/on/click",
- "image": "optional-image.jpg",
- "price": "Optional Price",
- "description": "Optional Description"
- }
- ]
- }
- },
- // optional action below results
- "action": {
- "url": '/path/to/results',
- "text": "View all 202 results"
- }
- }'''
- def search(request):
- if request.method == 'GET':
- keywords = request.GET.get('keywords')
- if keywords is not None:
- search_dict = dict()
- search_dict['title__contains'] = keywords
- search_dict['status'] = 1
- result = models.Article.objects.filter(**search_dict).values('id', 'intro', 'title', 'category__name')
- result_list = {}
- for item in result:
- if result_list.get(item['category__name']) == None:
- result_list[item['category__name']] = {}
- result_list[item['category__name']]['title'] = item['category__name']
- result_list[item['category__name']]['results'] = [
- {
- 'title': item['title'],
- 'description': item['intro'],
- 'url': '/article/{0}.html'.format(item['id'])
- }
- ]
- else:
- result_list[item['category__name']]['results'].append({
- 'title': item['title'],
- 'description': item['intro'],
- 'url': '/article/{0}.html'.format(item['id'])
- })
- return JsonResponse({'results':result_list}, safe=False)
- else:
- return JsonResponse({'results': []}, safe=False)
- else:
- return JsonResponse({"success": False, "message": "FUCK YOU"}, safe=False)
- def current_record(request, date):
- page = request.GET.get('page')
- if page is None:
- page = 0
- result = get_record_and_tags()
- context = {'current_category': date,
- 'articles': article.get_article(is_paginator=True, page=int(page), date_record=date),
- 'records': result['records'],
- 'tags': result['tags']
- }
- return render(request, 'category.html', context=context)
- def avatar(request, pk):
- sql = '''select avatar from auth_user au left join avatar_avatar aa on au.id = aa.user_id where au.id = {0}'''.format(
- pk)
- cursor = connection.cursor()
- cursor.execute(sql)
- fetchall = cursor.fetchall()
- return HttpResponseRedirect('/' + fetchall[0][0]) # 跳转到主界面
- # Create your views here.
- @xframe_options_sameorigin
- def index(request):
- article_sql = '''SELECT count(*) as count,strftime('%Y-%m',created_time) as datetime FROM blog_article group by strftime('%Y,%m',created_time)'''
- tag_sql = '''SELECT bt.id,bt.name,count() as count FROM blog_tags bt left join blog_article_tags bat on bt.id = bat.tags_id group by bt.name
- order by count desc limit 20'''
- cursor = connection.cursor()
- cursor.execute(article_sql)
- fetchall = cursor.fetchall()
- records = []
- for obj in fetchall:
- dic = {}
- dic['count'] = obj[0]
- dic['datetime'] = obj[1]
- records.append(dic)
- cursor.execute(tag_sql)
- fetchall = cursor.fetchall()
- tags = []
- for obj in fetchall:
- dic = {}
- dic['id'] = obj[0]
- dic['name'] = obj[1]
- dic['count'] = obj[2]
- tags.append(dic)
- context = {
- 'articles_new': article.get_article(20),
- 'records': records,
- 'tags': tags
- }
- return render(request, 'index.html', context=context)
- def get_record_and_tags():
- article_sql = '''SELECT count(*) as count,strftime('%Y-%m',created_time) as datetime FROM blog_article group by strftime('%Y,%m',created_time) order by created_time desc'''
- tag_sql = '''SELECT bt.id,bt.name,count() as count FROM blog_tags bt left join blog_article_tags bat on bt.id = bat.tags_id group by bt.name
- order by count desc limit 10'''
- cursor = connection.cursor()
- cursor.execute(article_sql)
- fetchall = cursor.fetchall()
- records = []
- for obj in fetchall:
- dic = {}
- dic['count'] = obj[0]
- dic['datetime'] = obj[1]
- records.append(dic)
- cursor.execute(tag_sql)
- fetchall = cursor.fetchall()
- tags = []
- for obj in fetchall:
- dic = {}
- dic['id'] = obj[0]
- dic['name'] = obj[1]
- dic['count'] = obj[2]
- tags.append(dic)
- context = {
- 'records': records,
- 'tags': tags
- }
- return context
|