This project was developed based on open data on the Internet, using flask and third-party libraries, and realized a dynamic website that automatically generates resumes after filling in data. This website can realize multi-user management and separate front and back ends.
The specific implementation ideas are as follows:
We initially implemented a layou.html, and expanded the html file as a template to monitor the implementation of other html.
In the design process, we refer to the general browsing order, and first implement a home interface. In this interface, if you are not logged in, you will be displayed with two options: login and registration; if you are logged in, you will be displayed to update account information and create a resume. , generate a pdf of your resume and share your resume with four options. Each option represents the implementation of a function, corresponding to a dynamically interactive interface. Next, we will introduce this project in detail in terms of usability. In order to facilitate adding information, we have built corresponding data structures for each category of information (data is stored in the database and read through sqlalchemy), for example: All types of information will be bound to the user table, the user is the center of information, and in order to facilitate the realization of a one-to-many relationship, we use the relationship multiple times in the data relationship, in the template HTML implementation, use the form to pass and Display multiple parameters. In order to facilitate users to record their own evaluation of their resumes, we have implemented a simple evaluation system. In this system, we can add ratings (0-9) and text evaluations, and can save and display the items The comment's creation time (UTC time). But what needs to be criticized is that when implementing the comment system, because the public display of the resume is not implemented, it cannot be like a forum where everyone who can see it can help you score and give comments on your resume. Another thing is, Due to time constraints, there is no good control over the overall webpage quality. For example, the scoring function of the comment system is to directly limit the input of one character to achieve a function that can only score 0-9 points. If it is possible to achieve similar tmdb for movies The effect of scoring will be even better. Think about it, compared to directly inputting numbers, it is obviously more comfortable to choose the appropriate score among the five stars. In addition, the overall appearance of the page is not very good. If it can be more refined, refer to some beautiful templates, and use more css scripts, it should have better visual effects, but because css is not very familiar, so in the future, you need to Learn more in this area, and strive to make it look better! Since scripts are rarely used in the implementation, and the validity of the submitted data is checked when the form is submitted, I believe that our project has no obvious security issues for the time being. Another thing worth mentioning is that in this project practice, I realized how important good code habits are. If you can use the hump method to name objects properly, you can greatly avoid the confusion of variable names, and also let I realize that we can't treat the naming of variables arbitrarily, otherwise it will really make people dizzy. In this project, I didn't consider this issue at the beginning. Later, I found that it was difficult to find the problem, so the code of this project may look at It sounds confusing and incomprehensible. Next, I would like to further introduce my thoughts on data structure-based security and usability. In this project, I created a total of 8 new data objects: UserModel, comments, userdetails, education, experience, projects, skills, and achievements. Among them, UserModel has a one-to-many relationship with other objects. This implementation can greatly facilitate us to dynamically increase or decrease user information, and we have strict restrictions on the value type, length limit and Whether it can be empty or not, this can greatly avoid SQL injection attacks. In addition, we can also easily query who the central object (UserModel) of a subsidiary object (such as education) is.
Therefore, in general, this project has completed the requirements of the dynamic resume generation (data interaction through the database) required by the course, and it is more beautiful and convenient to display resumes and evaluate resumes, but there is still a lot of progress The space is a little rough in many places, not beautiful and delicate enough!