def edit(post_id): post = Post.query.filter_by(id=post_id).first_or_404() form = PostForm(obj=post) if form.validate_on_submit(): original_image = post.image form.populate_obj(post) if form.image.has_file(): image = request.files.get('image') try: filename = uploaded_images.save(image) except: flash("The image was not uploaded") if filename: post.image = filename else: post.image = original_image if form.new_category.data: new_category = Category(form.new_category.data) db.session.add(new_category) db.session.flush() post.category = new_category db.session.commit() return redirect(url_for('article', slug=post.slug)) return render_template('blog/post.html', form=form, post=post, action="edit")
def post(): form = PostForm() error = '' if form.validate_on_submit(): image = request.files.get('image') filename = None try: filename = uploaded_images.save(image) except: flash('File not uploaded') if form.new_category.data: new_category = Category(form.new_category.data) db.session.add(new_category) db.session.flush() category = new_category elif form.category.data: category_id = form.category.get_pk(form.category.data) category = Category.query.filter_by(id=category_id).first() else: category = None blog = Blog.query.first() author = Author.query.filter_by(username=session['username']).first() slug = slugify(form.title.data) post = Post(blog, author, form.title.data, form.body.data, category, filename, slug) db.session.add(post) db.session.flush() if post.id: db.session.commit() flash('Post Created') return redirect(url_for('article', slug=slug)) else: db.session.rollback() error = 'Error creating post' return render_template('blog/post.html', form=form, error=error)
def post(): form = PostForm() if form.validate_on_submit(): # Process image image = request.files.get('image') filename = None try: filename = uploaded_images.save(image) except: flash('The image was not uploaded') # Handle category data if form.new_category.data: new_category = Category(form.new_category.data) db.session.add(new_category) db.session.flush() category = new_category elif form.category.data: category_id = form.category.get_pk(form.category.data) category = Category.query.filter_by(id=category_id).first() else: category = None blog = Blog.query.first() author = Author.query.filter_by(username=session['username']).first() title = form.title.data body = form.body.data slug = slugify(title) post = Post(blog, author, title, body, category, filename, slug) db.session.add(post) db.session.commit() return redirect(url_for('article', slug=slug)) return render_template('blog/post.html', form=form, action="new")
def new_category(title): cat = Category(title=title) cat.save() return cat
def setUp(self): self.c = Category(title="MyTitle") self.c.save()
def test_validate_article(self): site = get_current_site().domain user = BlogUser.objects.get_or_create(email="*****@*****.**", username="******")[0] user.set_password("superstrongz") user.is_staff = True user.is_superuser = True user.save() response = self.client.get(user.get_absolute_url()) self.assertEqual(response.status_code, 200) response = self.client.get('admin/admin/logentry/') s = SideBar() s.sequence = 1 s.name = 'test' s.content = 'test content' s.is_enable = True s.save() category = Category() category.name = "category" category.created_time = datetime.datetime.now() category.last_mod_time = datetime.datetime.now() category.save() tag = Tag() tag.name = "nicetag" tag.save() article = Article() article.title = "nicetitle" article.body = "nicecontent" article.author = user article.category = category article.type = 'a' article.status = 'p' article.save() self.assertEqual(0, article.tags.count()) article.tags.add(tag) article.save() self.assertEqual(1, article.tags.count()) for i in range(20): article = Article() article.title = "nicetitle" + str(i) article.body = "nicetitle" + str(i) article.author = user article.category = category article.type = 'a' article.status = 'p' article.save() article.tags.add(tag) article.save() response = self.client.get(article.get_absolute_url()) self.assertEqual(response.status_code, 200) from DjangoBlog.spider_notify import SpiderNotify SpiderNotify.notify(article.get_absolute_url()) response = self.client.get(tag.get_absolute_url()) self.assertEqual(response.status_code, 200) response = self.client.get(category.get_absolute_url()) self.assertEqual(response.status_code, 200) response = self.client.get('/search', {'q': 'django'}) self.assertEqual(response.status_code, 200) s = load_articletags(article) self.assertIsNotNone(s) rsp = self.client.get('/refresh') self.assertEqual(rsp.status_code, 302) self.client.login(username='******', password='******') rsp = self.client.get('/refresh') self.assertEqual(rsp.status_code, 200) response = self.client.get(reverse('blog:archives')) self.assertEqual(response.status_code, 200) p = Paginator(Article.objects.all(), 2) self.__check_pagination__(p, '', '') p = Paginator(Article.objects.filter(tags=tag), 2) self.__check_pagination__(p, '分类标签归档', tag.slug) p = Paginator(Article.objects.filter(author__username='******'), 2) self.__check_pagination__(p, '作者文章归档', 'superstrongz') p = Paginator(Article.objects.filter(category=category), 2) self.__check_pagination__(p, '分类目录归档', category.slug) f = BlogSearchForm() f.search() self.client.login(username='******', password='******') from DjangoBlog.spider_notify import SpiderNotify SpiderNotify.baidu_notify([article.get_full_url()]) from blog.templatetags.blog_tags import gravatar_url, gravatar u = gravatar_url('*****@*****.**') u = gravatar('*****@*****.**')
def test_validate_comment(self): site = get_current_site().domain user = BlogUser.objects.create_superuser( email="*****@*****.**", username="******", password="******") self.client.login(username='******', password='******') category = Category() category.name = "categoryccc" category.created_time = datetime.datetime.now() category.last_mod_time = datetime.datetime.now() category.save() article = Article() article.title = "nicetitleccc" article.body = "nicecontentccc" article.author = user article.category = category article.type = 'a' article.status = 'p' article.save() commenturl = reverse('comments:postcomment', kwargs={'article_id': article.id}) response = self.client.post(commenturl, {'body': '123ffffffffff'}) self.assertEqual(response.status_code, 200) article = Article.objects.get(pk=article.pk) self.assertEqual(len(article.comment_list()), 0) response = self.client.post(commenturl, { 'body': '123ffffffffff', 'email': user.email, 'name': user.username }) self.assertEqual(response.status_code, 302) article = Article.objects.get(pk=article.pk) self.assertEqual(len(article.comment_list()), 1) parent_comment_id = article.comment_list()[0].id response = self.client.post( commenturl, { 'body': ''' # Title1 ```python import os ``` [url](https://www.lylinux.net/) [ddd](http://www.baidu.com) ''', 'email': user.email, 'name': user.username, 'parent_comment_id': parent_comment_id }) self.assertEqual(response.status_code, 302) article = Article.objects.get(pk=article.pk) self.assertEqual(len(article.comment_list()), 2) comment = Comment.objects.get(id=parent_comment_id) tree = parse_commenttree(article.comment_list(), comment) self.assertEqual(len(tree), 1) data = show_comment_item(comment, True) self.assertIsNotNone(data) s = get_max_articleid_commentid() self.assertIsNotNone(s)
def test_string_representation(self): expected = "A Category" c1 = Category(name=expected) actual = str(c1) self.assertEqual(expected, actual)
def parse_md_to_article(file_path): """ 解析 md文件 :param file_path: md文件路径 :return: Article 文章对象 """ with open(file_path) as f: print(file_path) content = f.read() head = re.findall(r"---[.\\n\s\S]*---", content) # print(re.findall(r"---[.\\n\s\S]*---", content)) title = re.findall( r"^title: .*$", content, re.M)[0].split(": ")[1] if not title: print(file_path, "-------") created_time = re.findall( r"^date: .*$", content, re.M)[0].split(": ")[1] tags = re.findall( r"^tags: .*$", content, re.M)[0].split(": ")[1] tags = list(filter(None, re.split(r"[\[ ,\]]", tags, re.M))) try: category_id = re.findall( r"^category: .*$", content, re.M)[0].split(": ")[1] except IndexError: category_id = re.findall( r"^categories: .*$", content, re.M)[0].split(": ")[1] body = content.split(head[0])[1].strip() abstract = body.split("<!--more-->")[0] last_modified_time = created_time status = 'p' views = 0 likes = 0 topped = 0 article = None try: article = Article.objects.get(title=title) except Exception: pass if not article: article = Article() article.title = title print("----------", title) if title is 'Android Debug Bridge': print("true") if created_time: p = parse_datetime(created_time.strip()).replace(tzinfo=utc) naive = p article.created_time = naive article.last_modified_time = naive else: print("----------error create time is null:", title) article.body = body article.abstract = abstract article.status = status article.views = views article.likes = likes article.topped = topped article.save() save_tags(tags=tags) for tag in tags: article.tags.add(Tag.objects.get(name=tag)) c = None save_category(category_id) try: c = Category.objects.get(name=category_id) except Exception: pass if not c: c = Category(name=category_id) article.category_id = c.id # print(article.title, article.created_time, article.tags, article.category_id) return article
# encoding=utf8 from django import template from blog.models import Category register = template.Library() @register.simple_tag() def leaf_cat_list(): return Category.objects.filter(Parent__isnull=True) cat = Category() cat.CHILDS
def create(self, form): category = Category(category=form.category.data, slug=Service.slugify(form.category.data)) return category.put()
import random from urllib.request import urlopen from sqlalchemy.exc import SQLAlchemyError from blog import db from blog.models import Category from blog.models import Comment from blog.models import Post categories_count = 5 for number in range(categories_count): category_for_add = Category(f'Category number {number + 1}', f'#tag{number + 1}') db.session.add(category_for_add) posts_url = "https://jsonplaceholder.typicode.com/posts" comments_url = "https://jsonplaceholder.typicode.com/comments" posts = json.loads(urlopen(posts_url).read()) comments = json.loads(urlopen(comments_url).read()) for post in posts: category_number = random.randint(0, categories_count) tag = None if category_number: tag = f'#tag{random.randint(1, categories_count)}' post_for_add = Post(user_id=post['userId'], title=post['title'],
def category(self, instance): return Category()
def setUpClass(cls): cls.app = app.test_client() db.create_all() test_category = Category("Test Category") db.session.add(test_category) db.session.commit()
def setUp(self): self.c = Category("Test Category")
from blog.models import Category, Tag, Article from django.utils import timezone from django.contrib.auth.models import User c = Category(name='category test') c.save() t = Tag(name='tag test') t.save() # user = User.objects.get(username='******') # c = Category.objects.get(name='category test') # # p = Article(title='title test', body='body test', created_time=timezone.now(), modified_time=timezone.now(), category=c, author=user) # p.save() # # print(Category.objects.all()) # print(Tag.objects.all()) # print(Article.objects.all()) # print(User.objects.all())
def post(): form = PostForm() tags_field = request.values.get('tags_field', '') if form.validate_on_submit(): image_id = None if form.image.data: f = form.image.data image_id = str(uuid.uuid4()) file_name = image_id + '.png' file_path = os.path.join(BLOG_POST_IMAGES_PATH, file_name) Image.open(f).save(file_path) _image_resize(BLOG_POST_IMAGES_PATH, image_id, 600, 'lg') _image_resize(BLOG_POST_IMAGES_PATH, image_id, 300, 'sm') if form.new_category.data: new_category = Category(form.new_category.data) db.session.add(new_category) db.session.flush() category = new_category else: category = form.category.data if form.new_goverment.data: new_goverment = Goverment(form.new_goverment.data) db.session.add(new_goverment) db.session.flush() goverment = new_goverment else: goverment = form.goverment.data author = Author.query.get(session['id']) title = form.title.data.strip() body = form.body.data.strip() post = Post( author=author, title=title, body=body, image=image_id, category=category, goverment=goverment, ) _save_tags(post, tags_field) db.session.add(post) db.session.commit() slug = slugify(str(post.id) + '-' + post.title) post.slug = slug db.session.commit() flash('Article posted') return redirect(url_for('.article', slug=slug)) return render_template('blog/post.html', form=form, action="new", tags_field=tags_field)
def fake_category(catnum): with myapp.app_context(): for i in range(catnum): category = Category(name=fake.word()) db.session.add(category) db.session.commit()
def test_validate_article(self): # site = get_current_site().domain user = BlogUser.objects.get_or_create(email="*****@*****.**", username="******")[0] user.set_password("liangliangyy") user.is_staff = True user.is_superuser = True user.save() response = self.client.get(user.get_absolute_url()) self.assertEqual(response.status_code, 200) response = self.client.get('/admin/servermanager/emailsendlog/') response = self.client.get('admin/admin/logentry/') s = SideBar() s.sequence = 1 s.name = 'test' s.content = 'test content' s.is_enable = True s.save() category = Category() category.name = "category" category.created_time = datetime.datetime.now() category.last_mod_time = datetime.datetime.now() category.save() tag = Tag() tag.name = "nicetag" tag.save() article = Article() article.title = "nicetitle" article.body = "nicecontent" article.author = user article.category = category article.type = 'a' article.status = 'p' article.save() self.assertEqual(0, article.tags.count()) article.tags.add(tag) article.save() self.assertEqual(1, article.tags.count()) for i in range(20): article = Article() article.title = "nicetitle" + str(i) article.body = "nicetitle" + str(i) article.author = user article.category = category article.type = 'a' article.status = 'p' article.save() article.tags.add(tag) article.save() response = self.client.get(article.get_absolute_url()) self.assertEqual(response.status_code, 200) SpiderNotify.notify(article.get_absolute_url()) response = self.client.get(tag.get_absolute_url()) self.assertEqual(response.status_code, 200) response = self.client.get(category.get_absolute_url()) self.assertEqual(response.status_code, 200) response = self.client.get('/search', {'q': 'django'}) self.assertEqual(response.status_code, 200) s = load_articletags(article) self.assertIsNotNone(s) rsp = self.client.get('/refresh') self.assertEqual(rsp.status_code, 302) self.client.login(username='******', password='******') rsp = self.client.get('/refresh') self.assertEqual(rsp.status_code, 200) response = self.client.get(reverse('blog:archives')) self.assertEqual(response.status_code, 200) p = Paginator(Article.objects.all(), 2) self.__check_pagination__(p, '', '') p = Paginator(Article.objects.filter(tags=tag), 2) self.__check_pagination__(p, '分类标签归档', tag.slug) p = Paginator(Article.objects.filter(author__username='******'), 2) self.__check_pagination__(p, '作者文章归档', 'liangliangyy') p = Paginator(Article.objects.filter(category=category), 2) self.__check_pagination__(p, '分类目录归档', category.slug) f = BlogSearchForm() f.search() self.client.login(username='******', password='******') SpiderNotify.baidu_notify([article.get_full_url()]) # u = gravatar_url('*****@*****.**') u = gravatar('*****@*****.**') link = Links(sequence=1, name="lylinux", link='https://wwww.lylinux.net') link.save() response = self.client.get('/links.html') self.assertEqual(response.status_code, 200)
def update_posts(diff_info, update_all=False): """添加或修改文章""" repo = PostRepo( current_app.config["REPO_DIR"], current_app.config["REPO_SSHKEY"], current_app.config["REPO_BRANCH"], ) if update_all: updated_blobs, removed_blobs = repo.get_all_posts() else: updated_blobs, removed_blobs = repo.get_diff_posts( ref=diff_info['ref'], before_sha=diff_info['before'], after_sha=diff_info['after'], ) # 更新文章 updated_paths = {i.path for i in updated_blobs} updated_posts = Post.query.filter(Post.path.in_(updated_paths)).all() updated_posts = {i.path: i for i in updated_posts} for blob in updated_blobs: post = updated_posts.get(blob.path) or Post(path=blob.path) # 拉取文章信息 data = repo.get_post_detail(blob) # 获取 Author 对象 author_email = data["author"]["email"] author = User.query.filter_by(email=author_email).one_or_none() \ or User(email=author_email) author.name = data["author"]["name"] # 获取文章的 Meta-data 数据 content = data["content"] html_content = md_converter.convert(content) meta_data = md_converter.Meta # 获取 Category 对象 category = meta_data["category"][0] category = Category.query.filter_by(name=category).one_or_none() \ or Category(name=category) # 获取 Label 对象列表 labels = set() for label in meta_data["labels"]: label = Label.query.filter_by(name=label).one_or_none() \ or Label(name=label) labels.add(label) # 更新文章 post.title = data["title"] post.content = content post.html_content = html_content post.update_at = data["update_time"] post.create_at = data["create_time"] post.author = author post.category = category post.labels = labels db.session.add(post) print(f"{blob.name} is updated.") # noqa # 删除文章 removed_paths = {i.path for i in removed_blobs} removed_posts = Post.query.filter(Post.path.in_(removed_paths)).all() removed_posts = {i.path: i for i in removed_posts} for blob in removed_blobs: post = removed_posts.get(blob.path) if post: post.status = 2 print(f"{blob.name} is removed.") else: print(f"{blob.name} don't exist.") db.session.commit() # 在 redis 中存储最后更新时间 redis.set("last_update_at", datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
def add_category(name): c = Category(name=name) c.save()
def setUp(self): user = User.objects.create_user('erudev', '*****@*****.**', 'password') Category.objects.bulk_create( [Category(name='cate_%s' % i, owner=user) for i in range(10)])
def UploadArticle(request): if request.method == "GET": return render(request, 'blog/upload.html', {}) elif request.method == "POST": try: obj = request.FILES.get('fafafa') import os # 上传文件的文件名 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) f = open(os.path.join(BASE_DIR, 'static', 'upload', obj.name), 'wb') for chunk in obj.chunks(): f.write(chunk) f.close() article = yaml.load(file(os.path.join(BASE_DIR, 'static', 'upload', obj.name))) print article article = Article(title=article["title"], content=article["content"], date_time=article["date_time"],category=Category(id=1),author=User(id=1)) article.save() return HttpResponse("上传成功!") except Exception as e: print e return HttpResponse("上传失败!")
def test_validate_register(self): self.assertEquals( 0, len( BlogUser.objects.filter( email='*****@*****.**'))) response = self.client.post(reverse('account:register'), { 'username': '******', 'email': '*****@*****.**', 'password1': 'password123!q@wE#R$T', 'password2': 'password123!q@wE#R$T', }) self.assertEquals( 1, len( BlogUser.objects.filter( email='*****@*****.**'))) user = BlogUser.objects.filter(email='*****@*****.**')[0] sign = get_md5(get_md5(settings.SECRET_KEY + str(user.id))) path = reverse('accounts:result') url = '{path}?type=validation&id={id}&sign={sign}'.format( path=path, id=user.id, sign=sign) response = self.client.get(url) self.assertEqual(response.status_code, 200) self.client.login(username='******', password='******') user = BlogUser.objects.filter(email='*****@*****.**')[0] user.is_superuser = True user.is_staff = True user.save() delete_sidebar_cache(user.username) category = Category() category.name = "categoryaaa" category.created_time = timezone.now() category.last_mod_time = timezone.now() category.save() article = Article() article.category = category article.title = "nicetitle333" article.body = "nicecontentttt" article.author = user article.type = 'a' article.status = 'p' article.save() response = self.client.get(article.get_admin_url()) self.assertEqual(response.status_code, 200) response = self.client.get(reverse('account:logout')) self.assertIn(response.status_code, [301, 302, 200]) response = self.client.get(article.get_admin_url()) self.assertIn(response.status_code, [301, 302, 200]) response = self.client.post(reverse('account:login'), { 'username': '******', 'password': '******' }) self.assertIn(response.status_code, [301, 302, 200]) response = self.client.get(article.get_admin_url()) self.assertIn(response.status_code, [301, 302, 200])
def setUp(self): self.c = Category(title="MyTitle") self.c.save() self.b = Blog(title="BlogTitle", category=self.c) self.b.save()
def test_get_absolute_url(self): c = Category() c.save() # This will also fail if the urlconf is not defined. self.assertEquals(c.get_absolute_url(), '/blog/categories/%s/' % c.id)
def test_validate_register(self): self.assertEquals( 0, len(BlogUser.objects.filter(email='*****@*****.**'))) response = self.client.post( reverse('account:register'), { 'username': '******', 'email': '*****@*****.**', 'password1': 'password123!q@wE#R$T', 'password2': 'password123!q@wE#R$T', }) self.assertEquals( 1, len(BlogUser.objects.filter(email='*****@*****.**'))) user = BlogUser.objects.filter(email='*****@*****.**')[0] sign = get_md5(get_md5(settings.SECRET_KEY + str(user.id))) path = reverse('accounts:result') url = '{path}?type=validation&id={id}&sign={sign}'.format(path=path, id=user.id, sign=sign) response = self.client.get(url) self.assertEqual(response.status_code, 200) self.client.login(username='******', password='******') user = BlogUser.objects.filter(email='*****@*****.**')[0] user.is_superuser = True user.is_staff = True user.save() delete_sidebar_cache(user.username) category = Category() category.name = "categoryaaa" category.created_time = datetime.datetime.now() category.last_mod_time = datetime.datetime.now() category.save() article = Article() article.category = category article.title = "nicetitle333" article.body = "nicecontentttt" article.author = user article.type = 'a' article.status = 'p' article.save() response = self.client.get(article.get_admin_url()) self.assertEqual(response.status_code, 200) response = self.client.get(reverse('account:logout')) self.assertIn(response.status_code, [301, 302, 200]) response = self.client.get(article.get_admin_url()) self.assertIn(response.status_code, [301, 302, 200]) response = self.client.get(reverse('account:login')) self.assertEqual(response.status_code, 200) pub_key = response.context['form'].initial['pub_key'] pubobj = Cipher_pkcs1_v1_5.new(RSA.importKey(pub_key)) pw = base64.b64encode(pubobj.encrypt('qwer!@#$ggg'.encode())) response = self.client.post( reverse('account:login'), { 'username': '******', 'password': pw.decode(), 'pub_key': pub_key }) self.assertIn(response.status_code, [301, 302, 200]) response = self.client.get(article.get_admin_url()) self.assertIn(response.status_code, [301, 302, 200])
description='Leader of PNL, Mayor of Sibiu', image='img/iohannis.png' ) can2 = Candidate( name='Vasilica Viorica Dăncilă', description='President of the PSD', image='img/dancila.png' ) can1.save() can2.save() sesh1 = VotingSession( name="Presidential Elections", year=2019, country='Romania' ) c1 = Category( name='Software Development' ) c1.save() post1 = Post( title='Lorem Ipsum', body='Dummy text', categories=c1 ) post1.save()
def test_validate_article(self): site = Site.objects.get_current().domain user = BlogUser.objects.get_or_create(email="*****@*****.**", username="******")[0] user.set_password("systemsgt.cn") user.is_staff = True user.is_superuser = True user.save() response = self.client.get(user.get_absolute_url()) self.assertEqual(response.status_code, 200) category = Category() category.name = "category" category.created_time = datetime.datetime.now() category.last_mod_time = datetime.datetime.now() category.save() tag = Tag() tag.name = "nicetag" tag.save() article = Article() article.title = "nicetitle" article.body = "nicecontent" article.author = user article.category = category article.type = 'a' article.status = 'p' article.save() self.assertEqual(0, article.tags.count()) article.tags.add(tag) article.save() self.assertEqual(1, article.tags.count()) response = self.client.get(article.get_absolute_url()) self.assertEqual(response.status_code, 200) from DjangoBlog.spider_notify import SpiderNotify SpiderNotify.notify(article.get_absolute_url()) response = self.client.get(tag.get_absolute_url()) self.assertEqual(response.status_code, 200) response = self.client.get(category.get_absolute_url()) self.assertEqual(response.status_code, 200) response = self.client.get('/search', {'q': 'django'}) self.assertEqual(response.status_code, 200) s = load_articletags(article) self.assertIsNotNone(s) p = Paginator(Article.objects.all(), 2) s = load_pagination_info(p.page(1), '', '') self.assertIsNotNone(s) p = Paginator(Tag.objects.all(), 2) s = load_pagination_info(p.page(1), '分类标签归档', 'tagname') self.assertIsNotNone(s) p = Paginator(BlogUser.objects.all(), 2) s = load_pagination_info(p.page(1), '作者文章归档', 'username') self.assertIsNotNone(s) p = Paginator(Category.objects.all(), 2) s = load_pagination_info(p.page(1), '分类目录归档', 'categoryname') self.assertIsNotNone(s) f = BlogSearchForm() f.search() self.client.login(username='******', password='******') from DjangoBlog.spider_notify import SpiderNotify SpiderNotify.baidu_notify([article.get_full_url()]) rsp = self.client.get('/refresh/') self.assertEqual(rsp.status_code, 200) from blog.templatetags.blog_tags import gravatar_url, gravatar u = gravatar_url('*****@*****.**') u = gravatar('*****@*****.**')
def test_validate_article(self): site = Site.objects.get_current().domain user = BlogUser.objects.get_or_create(email="*****@*****.**", username="******")[0] user.set_password("liangliangyy") user.save() response = self.client.get(user.get_absolute_url()) self.assertEqual(response.status_code, 200) category = Category() category.name = "category" category.created_time = datetime.datetime.now() category.last_mod_time = datetime.datetime.now() category.save() tag = Tag() tag.name = "nicetag" tag.save() article = Article() article.title = "nicetitle" article.body = "nicecontent" article.author = user article.category = category article.type = 'a' article.status = 'p' article.save() self.assertEqual(0, article.tags.count()) article.tags.add(tag) article.save() self.assertEqual(1, article.tags.count()) response = self.client.get(article.get_absolute_url()) self.assertEqual(response.status_code, 200) response = self.client.get(tag.get_absolute_url()) self.assertEqual(response.status_code, 200) response = self.client.get(category.get_absolute_url()) self.assertEqual(response.status_code, 200) response = self.client.get('/search', {'q': 'django'}) self.assertEqual(response.status_code, 200) s = load_articletags(article) self.assertIsNotNone(s) p = Paginator(Article.objects.all(), 2) s = load_pagination_info(p.page(1), '', '') self.assertIsNotNone(s) p = Paginator(Tag.objects.all(), 2) s = load_pagination_info(p.page(1), '分类标签归档', 'tagname') self.assertIsNotNone(s) p = Paginator(BlogUser.objects.all(), 2) s = load_pagination_info(p.page(1), '作者文章归档', 'username') self.assertIsNotNone(s) p = Paginator(Category.objects.all(), 2) s = load_pagination_info(p.page(1), '分类目录归档', 'categoryname') self.assertIsNotNone(s) f = BlogSearchForm() f.search() from DjangoBlog.spider_notify import SpiderNotify SpiderNotify.baidu_notify([article.get_full_url()])