Python django implements the verification code function instance code, pythondjango

Source: Internet
Author: User

Python django implements the verification code function instance code, pythondjango

I did not know much about Python Django recently, so now I want to record it while learning it and discuss it with everyone!

At the beginning, I found a lot of demos on the Internet, but when I was imitating them, I found that my version cannot run on the front-end page. It is a graph split, probably because my Python3.5 version and django version are 1.10, I saw many versions of 2.7 in the evening, so I asked many predecessors and great gods, and finally found the cause. After the code is ready, I will make a rough post below.

This is my project directory.

To successfully display the verification code, you must have a verification code generator. Therefore, you must write a verification code generator. I created a new py file check_coed.py in the app, which is the verification code generator. The Code is as follows:

Import randomfrom PIL import Image, ImageDraw, ImageFont, ImageFilter_letter_cases = "inherit" # Remove lowercase letters that may interfere with I, l, o, z_upper_cases = _ letter_cases.upper () # capital letter _ numbers = ''. join (map (str, range (3, 10) # Number init_chars = ''. join (_ letter_cases, _ upper_cases, _ numbers) def create_validate_code (size = (120, 30), chars = init_chars, img_type = "GIF", mode = "RGB ", bg_color = (255,255,255), fg_color = (0, 0,255), font_size = 18, font_type = "Monaco. ttf ", length = 4, draw_lines = True, n_line = (1, 2), draw_points = True, point_chance = 2):" @ todo: generate Verification Code image @ param size: size of the image, format (width, height), default value: (120, 30) @ param chars: allowed character set combination, Format String @ param img_type: the default format for saving images is GIF. The options are GIF, JPEG, TIFF, and PNG @ param mode. The default format is RGB @ param bg_color, the default value is white @ param fg_color: foreground color and Verification Code character color. The default value is blue # 0000FF @ param font_size: Verification Code font size @ param font_type: The Verification Code font. The default value is AE _AlArabiya.ttf @ param: number of Characters in the verification code @ param draw_lines: Indicates whether to draw interference lines @ param n_lines: The number range of interference lines. Format tuples. The default value is (1, 2 ), valid only when draw_lines is True @ param draw_points: whether to draw interference points @ param point_chance: the probability of occurrence of interference points. The value range is [0,100] @ return: [0]: PIL Image instance @ return: [1]: the string "width, height = size # width and height # Create Image img = Image. new (mode, size, bg_color) draw = ImageDraw. draw (img) # create brush def get_chars (): "generate a string of the given length, return the List format" "return random. sample (chars, length) def create_lines (): "Draw interference line" line_num = random. randint (* n_line) # Number of interfering lines for I in range (line_num): # Starting Point begin = (random. randint (0, size [0]), random. randint (0, size [1]) # end Point end = (random. randint (0, size [0]), random. randint (0, size [1]) draw. line ([begin, end], fill = (0, 0, 0) def create_points (): "" chance = min (100, max (0, int (point_chance) # The size limit is [0,100] for w in range (width): for h in range (height): tmp = random. randint (0,100) if tmp> 100-chance: draw. point (w, h), fill = (0, 0, 0) def create_strs (): "Draw Verification Code character" c_chars = get_chars () strs = '% s' % ''. join (c_chars) # separate each character with spaces # font = ImageFont. truetype (font_type, font_size) font = ImageFont. load_default (). font font_width, font_height = font. getsize (strs) draw. text (width-font_width)/3, (height-font_height)/3), strs, font = font, fill = fg_color) return ''. join (c_chars) if draw_lines: create_lines () if draw_points: create_points () strs = create_strs () # graphic distortion parameter params = [1-float (random. randint (1, 2)/, 0, 0,-float (random. randint (1, 10)/100, float (random. randint (1, 2)/500, 0.001, float (random. randint (1, 2)/500] img = img. transform (size, Image. PERSPECTIVE, params) # create distortion img = img. filter (ImageFilter. EDGE_ENHANCE_MORE) # filter, boundary enhancement (greater threshold)

In the html front-end

The last few sentences in the front end can be left blank, but you can add them to the front end to refresh the verification code.

The general project is almost completed, but it is still a little short of a font file, so that you can adjust the font and set the font at will. This can be downloaded from the Internet without being pasted. The file name is

Now it's all done. The above is all the content of this article. I hope it will be helpful for your learning and support for helping customers.

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.